(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.24 and 1.32

version 1.24, 2005/05/26 22:02:29 version 1.32, 2005/12/08 21:34:54
Line 68 
Line 68 
 JvmVector JMPIjvm::jv; JvmVector JMPIjvm::jv;
 int JMPIjvm::trace=0; int JMPIjvm::trace=0;
  
   #ifdef PEGASUS_DEBUG
 #define DDD(x) if (JMPIjvm::trace) x; #define DDD(x) if (JMPIjvm::trace) x;
   #else
   #define DDD(x)
   #endif
  
 #include "Convert.h" #include "Convert.h"
  
 JMPIjvm::ClassTable  JMPIjvm::_classTable; JMPIjvm::ClassTable  JMPIjvm::_classTable;
 JMPIjvm::ObjectTable JMPIjvm::_objectTable; JMPIjvm::ObjectTable JMPIjvm::_objectTable;
  
 typedef struct {  
   int clsIndex;  
   const char * methodName;  
   const char * signature;  
 } METHOD_STRUCT;  
   
 const char* classNames[]={ const char* classNames[]={
       "java/util/Vector" , // 0  /*00*/ "java/util/Vector" ,
       "java/lang/Boolean", // 1  /*01*/ "java/lang/Boolean",
       "java/lang/Byte",    // 2  /*02*/ "java/lang/Byte",
       "java/lang/Short",   // 3  /*03*/ "java/lang/Short",
       "java/lang/Integer", // 4  /*04*/ "java/lang/Integer",
       "java/lang/Long",    // 5  /*05*/ "java/lang/Long",
       "java/lang/Float",   // 6  /*06*/ "java/lang/Float",
       "java/lang/Double",  // 7  /*07*/ "java/lang/Double",
       "org/pegasus/jmpi/UnsignedInt8",    // 8  /*08*/ "org/pegasus/jmpi/UnsignedInt8",
       "org/pegasus/jmpi/UnsignedInt16",   // 9  /*09*/ "org/pegasus/jmpi/UnsignedInt16",
       "org/pegasus/jmpi/UnsignedInt32",   // 10  /*10*/ "org/pegasus/jmpi/UnsignedInt32",
       "org/pegasus/jmpi/UnsignedInt64",   // 11  /*11*/ "org/pegasus/jmpi/UnsignedInt64",
       "org/pegasus/jmpi/CIMObjectPath",   // 12  /*12*/ "org/pegasus/jmpi/CIMObjectPath",
       "org/pegasus/jmpi/CIMException",    // 13  /*13*/ "org/pegasus/jmpi/CIMException",
       "java/math/BigInteger",             // 14  /*14*/ "java/math/BigInteger",
       "org/pegasus/jmpi/CIMProperty",     // 15  /*15*/ "org/pegasus/jmpi/CIMProperty",
   /*16*/ "org/pegasus/jmpi/CIMOMHandle",
       "org/pegasus/jmpi/CIMOMHandle",     // 16  /*17*/ "org/pegasus/jmpi/CIMClass",
       "org/pegasus/jmpi/CIMClass",        // 17  /*18*/ "org/pegasus/jmpi/CIMInstance",
       "org/pegasus/jmpi/CIMInstance",     // 18  /*19*/ "org/pegasus/jmpi/CIMValue",
       "org/pegasus/jmpi/CIMValue",        // 19  /*20*/ "java/lang/Object",
       "java/lang/Object",                 // 20  /*21*/ "java/lang/Throwable",
       "java/lang/Throwable",              // 21  /*22*/ "java/lang/String",
       "java/lang/String",                 // 22  /*23*/ "org/pegasus/jmpi/JarClassLoader",
       "org/pegasus/jmpi/JarClassLoader",  // 23  /*24*/ "org/pegasus/jmpi/CIMDateTime",
       "org/pegasus/jmpi/CIMDateTime",     // 24  /*25*/ "org/pegasus/jmpi/SelectExp",
       "org/pegasus/jmpi/SelectExp",       // 25  /*26*/ "org/pegasus/jmpi/CIMQualifier",
       "org/pegasus/jmpi/CIMQualifier",    // 26  /*27*/ "org/pegasus/jmpi/CIMQualifierType",
       "org/pegasus/jmpi/CIMQualifierType",// 27  /*28*/ "org/pegasus/jmpi/CIMFlavor",
       "org/pegasus/jmpi/CIMFlavor",       // 28  /*29*/ "org/pegasus/jmpi/CIMArgument",
       "org/pegasus/jmpi/CIMArgument",     // 29  /*30*/ "org/pegasus/jmpi/CIMInstanceException",
       "org/pegasus/jmpi/CIMInstanceException",    // 30  
 }; };
  
   
 const METHOD_STRUCT instanceMethodNames[]={ const METHOD_STRUCT instanceMethodNames[]={
 /*00*/ { 0, "<init>",        "()V" },  /*00 VectorNew               */ { /*Vector        */ 0, "<init>",          "()V" },
 /*01*/ { 1, "<init>",        "(Z)V" },  /*01 BooleanNewZ             */ { /*Boolean       */ 1, "<init>",          "(Z)V" },
 /*02*/ { 2, "<init>",        "(B)V" },  /*02 ByteNewB                */ { /*Byte          */ 2, "<init>",          "(B)V" },
 /*03*/ { 3, "<init>",        "(S)V" },  /*03 ShortNewS               */ { /*Short         */ 3, "<init>",          "(S)V" },
 /*04*/ { 4, "<init>",        "(I)V" },  /*04 IntegerNewI             */ { /*Integer       */ 4, "<init>",          "(I)V" },
 /*05*/ { 5, "<init>",        "(J)V" },    // ???  /*05 LongNewJ                */ { /*Long          */ 5, "<init>",          "(J)V" },
 /*06*/ { 6, "<init>",        "(F)V" },  /*06 FloatNewF               */ { /*Float         */ 6, "<init>",          "(F)V" },
 /*07*/ { 7, "<init>",        "(D)V" },  /*07 DoubleNewD              */ { /*Double        */ 7, "<init>",          "(D)V" },
 /*08*/ { 8, "<init>",        "(S)V" },  /*08 UnsignedInt8NewS        */ { /*UnsignedInt8  */ 8, "<init>",          "(S)V" },
 /*09*/ { 9, "<init>",        "(I)V" },  /*09 UnsignedInt16NewI       */ { /*UnsignedInt16 */ 9, "<init>",          "(I)V" },
 /*10*/ { 10,"<init>",        "(J)V" },  /*10 UnsignedInt32NewJ       */ { /*UnsignedInt32 */10, "<init>",          "(J)V" },
 /*11*/ { 11,"<init>",        "(Ljava/math/BigInteger;)V" },  /*11 UnsignedInt64NewBi      */ { /*UnsignedInt64 */11, "<init>",          "(Ljava/math/BigInteger;)V" },
 /*12*/ { 12,"<init>",        "(I)V" },  /*12 CIMObjectPathNewI       */ { /*CIMObjectPath */12, "<init>",          "(I)V" },
 /*13*/ { 13,"<init>",        "(Ljava/lang/String;)V" },  /*13 CIMExceptionNewSt       */ { /*CIMException  */13, "<init>",          "(Ljava/lang/String;)V" },
 /*14*/ { 15,"<init>",        "(I)V" },  /*14 CIMPropertyNewI         */ { /*CIMProperty   */15, "<init>",          "(I)V" },
 /*15*/ { 0, "addElement",    "(Ljava/lang/Object;)V" },  /*15 VectorAddElement        */ { /*Vector        */ 0, "addElement",      "(Ljava/lang/Object;)V" },
   /*16 VectorElementAt         */ { /*Vector        */ 0, "elementAt",       "(I)Ljava/lang/Object;" },
 /*16*/ { 0, "elementAt",     "(I)Ljava/lang/Object;" },  /*17 CIMOMHandleNewISt       */ { /*CIMOMHandle   */16, "<init>",          "(ILjava/lang/String;)V" },
 /*17*/ { 16,"<init>",        "(ILjava/lang/String;)V" },  /*18 CIMExceptionNewI        */ { /*CIMException  */13, "<init>",          "(I)V" },
 /*18*/ { 13,"<init>",        "(I)V" },  /*19 CIMClassNewI            */ { /*CIMClass      */17, "<init>",          "(I)V" },
 /*19*/ { 17,"<init>",        "(I)V" },  /*20 CIMInstanceNewI         */ { /*CIMInstance   */18, "<init>",          "(I)V" },
 /*20*/ { 18,"<init>",        "(I)V" },  /*21 CIMObjectPathCInst      */ { /*CIMObjectPath */12, "cInst",           "()I" },
 /*21*/ { 12,"<init>",        "(I)V" },  /*22 CIMInstanceCInst        */ { /*CIMInstance   */18, "cInst",           "()I" },
 /*22*/ { 12,"cInst",         "()I" },  /*23 CIMClassCInst           */ { /*CIMClass      */17, "cInst",           "()I" },
 /*23*/ { 18,"cInst",         "()I" },  /*24 ObjectToString          */ { /*Object        */20, "toString",        "()Ljava/lang/String;" },
 /*24*/ { 17,"cInst",         "()I" },  /*25 ThrowableGetMessage     */ { /*Throwable     */21, "getMessage",      "()Ljava/lang/String;" },
 /*25*/ { 20,"toString",      "()Ljava/lang/String;" },  /*26 CIMExceptionGetID       */ { /*CIMException  */13, "getID",           "()Ljava/lang/String;" },
 /*26*/ { 21,"getMessage",    "()Ljava/lang/String;" },  /*27 VectorSize              */ { /*Vector        */ 0, "size",            "()I" },
 /*27*/ { 13,"getID",         "()Ljava/lang/String;" },  /*28 CIMPropertyCInst        */ { /*CIMProperty   */15, "cInst",           "()I" },
 /*28*/ { 0, "size",          "()I" },  /*29 CIMOMHandleGetClass     */ { /*CIMOMHandle   */16, "getClass",        "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 /*29*/ { 15,"cInst",         "()I" },  /*30 VectorRemoveElementAt   */ { /*Vector        */ 0, "removeElementAt", "(I)V" },
 /*30*/ { 16,"getClass",      "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },  /*31 CIMValueCInst           */ { /*CIMValue      */19, "cInst",           "()I" },
 /*31*/ { 0, "removeElementAt",     "(I)V" },  /*32 CIMExceptionNewISt      */ { /*CIMException  */13, "<init>",          "(ILjava/lang/String;)V" },
 /*32*/ { 19,"cInst",         "()I" },  /*33 CIMExceptionGetCode     */ { /*CIMException  */13, "getCode",         "()I" },
 /*33*/ { 13,"<init>",        "(ILjava/lang/String;)V" },  /*34 CIMDateTimeNewI         */ { /*CIMDateTime   */24, "<init>",          "(I)V" },
 /*34*/ { 13,"getCode",       "()I" },  /*35 SelectExpNewI           */ { /*SelectExp     */25, "<init>",          "(I)V" },
 /*35*/ { 24,"<init>",        "(I)V" },  /*36 CIMQualifierNewI        */ { /*CIMQualifier  */26, "<init>",          "(I)V" },
 /*36*/ { 25,"<init>",        "(I)V" },  /*37 CIMFlavorNewI           */ { /*CIMFlavor     */28, "<init>",          "(I)V" },
 /*37*/ { 26,"<init>",        "(I)V" },  /*38 CIMFlavorGetFlavor      */ { /*CIMFlavor     */28, "getFlavor",       "()I" },
 /*38*/ { 28,"<init>",        "(I)V" },  /*39 CIMArgumentCInst        */ { /*CIMArgument   */29, "cInst",           "()I" },
 /*38*/ { 28,"getFlavor",     "()I" },  /*40 CIMArgumentNewI         */ { /*CIMArgument   */29, "<init>",          "(I)V" },
 /*39*/ { 29,"cInst",         "()I" },  /*41 CIMExceptionNew         */ { /*CIMException  */13, "<init>",          "()V" },
 /*40*/ { 29,"<init>",        "(I)V" },  /*42 CIMExceptionNewStOb     */ { /*CIMException  */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;)V" },
 /*41*/ { 13,"<init>",        "()V" },  /*43 CIMExceptionNewStObOb   */ { /*CIMException  */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
 /*42*/ { 13,"<init>",        "(Ljava/lang/String;)V" },  /*44 CIMExceptionNewStObObOb */ { /*CIMException  */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },
 /*43*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;)V" },  /*45 CIMValueNewI            */ { /*CIMValue      */19, "<init>",          "(I)V" },
 /*44*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },  
 /*45*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },  
 /*47*/ { 19,"<init>",        "(I)V" },  
 }; };
  
 const METHOD_STRUCT staticMethodNames[]={ const METHOD_STRUCT staticMethodNames[]={
       { 14, "valueOf",      "(J)Ljava/math/BigInteger;" },  /*00*/ { 14, "valueOf",         "(J)Ljava/math/BigInteger;" },
       { 23, "load",         "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },  /*01*/ { 23, "load",            "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 }; };
  
   
 static int methodInitDone=0; static int methodInitDone=0;
  
 jclass classRefs[sizeof(classNames)/sizeof(char*)];  jclass    classRefs[sizeof(classNames)/sizeof(classNames[0])];
 jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)];  jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])];
 jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)];  jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(staticMethodNames[0])];
  
 //static jclass providerClassRef;  jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name)
   {
 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) {  
   jclass localRefCls=env->FindClass(name);   jclass localRefCls=env->FindClass(name);
  
   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: localRefCls = "<<PEGASUS_STD(hex)<<(int)localRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));  
   
   if (localRefCls==NULL)   if (localRefCls==NULL)
      return JNI_FALSE;      return JNI_FALSE;
  
   jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);   jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
  
   #if 0
     jmethodID   jmidToString   = env->GetMethodID(globalRefCls, "toString", "()Ljava/lang/String;");
     jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls, jmidToString);
     const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
   
     DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<", pszResult = "<<pszResult<<PEGASUS_STD(endl));
   
     env->ReleaseStringUTFChars (jstringResult, pszResult);
   #else
     DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));
   #endif
   
   env->DeleteLocalRef(localRefCls);   env->DeleteLocalRef(localRefCls);
  
   return globalRefCls;   return globalRefCls;
 } }
  
 JMPIjvm::JMPIjvm() {  JMPIjvm::JMPIjvm()
   {
    initJVM();    initJVM();
 } }
  
 JMPIjvm::~JMPIjvm() {  JMPIjvm::~JMPIjvm()
   {
 } }
  
 int JMPIjvm::cacheIDs(JNIEnv *env) {  int JMPIjvm::cacheIDs(JNIEnv *env)
   {
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));
  
    if (methodInitDone==1)    if (methodInitDone==1)
Line 216 
Line 219 
  
    methodInitDone=-1;    methodInitDone=-1;
  
    for (unsigned i=0; i<(sizeof(classNames)/sizeof(char*)); i++) {     for (unsigned i=0; i<(sizeof(classNames)/sizeof(classNames[0])); i++) {
 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl)); //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl));
       if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)       if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)
       {       {
Line 226 
Line 229 
       }       }
    }    }
  
    for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)); j++) {     for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])); j++) {
 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));  //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<": "<<instanceMethodNames[j].signature<<PEGASUS_STD(endl));
       if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],       if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],
                                                  instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL)                                                   instanceMethodNames[j].methodName,
                                                    instanceMethodNames[j].signature))==NULL)
       {       {
          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
          return 0;          return 0;
       }       }
    }    }
  
    for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)); k++) {     for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(staticMethodNames[0])); k++) {
 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));  //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<": "<<staticMethodNames[k].signature<<PEGASUS_STD(endl));
       if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],       if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],
                                                      staticMethodNames[k].methodName,staticMethodNames[k].signature))==NULL)                                                       staticMethodNames[k].methodName,
                                                        staticMethodNames[k].signature))==NULL)
       {       {
          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
          return 0;          return 0;
Line 248 
Line 253 
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));
  
      jv.env=env;
      jv.classRefs=classRefs;
      jv.instMethodIDs=instanceMethodIDs;
      jv.staticMethodIDs=staticMethodIDs;
      jv.instanceMethodNames=instanceMethodNames;
   
    methodInitDone=1;    methodInitDone=1;
  
    return JNI_TRUE;    return JNI_TRUE;
 } }
  
 static void throwCIMException(JNIEnv *env,char *e) {  static void throwCIMException(JNIEnv *env,char *e)
    env->ThrowNew(classRefs[13],e);  {
      JMPIjvm::cacheIDs(env);
   
      env->ThrowNew(JMPIjvm::jv.CIMExceptionClassRef,e);
 } }
  
 int JMPIjvm::destroyJVM() int JMPIjvm::destroyJVM()
Line 264 
Line 278 
    #ifdef JAVA_DESTROY_VM_WORKS    #ifdef JAVA_DESTROY_VM_WORKS
    if (jvm!=NULL) {    if (jvm!=NULL) {
       JvmVector *jv;       JvmVector *jv;
   
       attachThread(&jv);       attachThread(&jv);
   
       jvm->DestroyJavaVM();       jvm->DestroyJavaVM();
   
       jvm=NULL;       jvm=NULL;
   
       return 0;       return 0;
    }    }
    #endif    #endif
Line 274 
Line 292 
    return -1;    return -1;
 } }
  
   Mutex JMPIjvm::_initMutex;
   
 int JMPIjvm::initJVM() int JMPIjvm::initJVM()
 { {
      AutoMutex lock (_initMutex);
   
      if (jvm != NULL)
      {
         return 0;
      }
   
    JavaVMInitArgs vm_args;    JavaVMInitArgs vm_args;
    jint res;    jint res;
    char *envstring;    char *envstring;
    JNIEnv *env;    JNIEnv *env;
    JavaVMOption *poptions = 0;    JavaVMOption *poptions = 0;
    int maxoption = 0;    int maxoption = 0;
      typedef struct _JVMOptions {
         const char *pszEnvName;
         const char *pszPrefix;
         bool        fSplit;
      } JVMOPTIONS;
    Array<std::string> JNIoptions;    Array<std::string> JNIoptions;
    static const char *aENVoptions[][2] = {     static JVMOPTIONS aEnvOptions[] = {
       { "CLASSPATH",                           "-Djava.class.path=" },        { "CLASSPATH",                           "-Djava.class.path=", false },
       { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx" },        { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx"              , false },
       { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms" },        { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms"              , false },
       { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss" }        { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss"              , false },
         { "PEGASUS_JMPI_VERBOSE",                "-verbose:"         , true  }
    };    };
    std::ostringstream oss;    std::ostringstream oss;
  
Line 314 
Line 347 
 ///JNIoptions.append ("-Djava.compiler=NONE"); ///JNIoptions.append ("-Djava.compiler=NONE");
 ///maxoption++; ///maxoption++;
  
    for (Uint32 i = 0; i < (int)(sizeof (aENVoptions)/sizeof (aENVoptions[0])); i++)     for (Uint32 i = 0; i < (int)(sizeof (aEnvOptions)/sizeof (aEnvOptions[0])); i++)
    {    {
       const char *name = aENVoptions[i][0];        JVMOPTIONS *pEnvOption = &aEnvOptions[i];
  
       envstring = getenv (name);        envstring = getenv (pEnvOption->pszEnvName);
       if (envstring)       if (envstring)
       {       {
            if (pEnvOption->fSplit)
            {
               bool              fCommaFound  = true;
               string            stringValues = envstring;
               string::size_type posStart     = 0;
               string::size_type posEnd       = stringValues.length () - 1;
   
               while (fCommaFound)
               {
                  string            stringValue;
                  string::size_type posComma    = stringValues.find (',', posStart);
   
                  if (posComma != string::npos)
                  {
                     fCommaFound = true;
                     stringValue = stringValues.substr (posStart, posComma);
                     posStart    = posComma + 1;
                  }
                  else
                  {
                     fCommaFound = false;
                     stringValue = stringValues.substr (posStart, posEnd - posStart + 1);
                  }
   
                  DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): fCommaFound = " << fCommaFound << ", posStart = " << posStart << ", posComma = " << posComma << ", posEnd = " << posEnd << "" << PEGASUS_STD(endl));
   
          maxoption++;          maxoption++;
  
          oss.str ("");          oss.str ("");
          oss << aENVoptions[i][1] << envstring;                 oss << pEnvOption->pszPrefix << stringValue;
  
          JNIoptions.append (oss.str ());          JNIoptions.append (oss.str ());
  
          DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << name << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));                 DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
               }
            }
            else
            {
               maxoption++;
   
               oss.str ("");
               oss << pEnvOption->pszPrefix << envstring;
   
               JNIoptions.append (oss.str ());
   
               DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
            }
       }       }
    }    }
  
Line 349 
Line 421 
       DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));       DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));
    }    }
  
    vm_args.version=0x00010002;     vm_args.version=JNI_VERSION_1_2;
    vm_args.options=poptions;    vm_args.options=poptions;
    vm_args.nOptions=maxoption;    vm_args.nOptions=maxoption;
    vm_args.ignoreUnrecognized=JNI_TRUE;    vm_args.ignoreUnrecognized=JNI_TRUE;
Line 362 
Line 434 
    }    }
  
    if (res!=0) {    if (res!=0) {
         jv.initRc=1;
   
       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));
  
       exit(1);        return -1;
    }    }
    jv.jvm=jvm;  
    jv.env=env;  
  
    if (cacheIDs(env)==1) {     cacheIDs(env);
       jv.classRefs=classRefs;  
       jv.instMethodIDs=instanceMethodIDs;  
    }  
  
    if (env->ExceptionOccurred()) {    if (env->ExceptionOccurred()) {
         jv.initRc=1;
   
       env->ExceptionDescribe();       env->ExceptionDescribe();
       exit(1);  
   #ifdef JAVA_DESTROY_VM_WORKS
   
         JvmVector *jv = NULL;
   
         attachThread (&jv);
   
         jvm->DestroyJavaVM ();
   
         jvm = NULL;
   #endif
   
         return -1;
    }    }
  
      jv.initRc=1;
      jv.jvm=jvm;
   
    return res;    return res;
 } }
  
 JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) {  JNIEnv* JMPIjvm::attachThread(JvmVector **jvp)
    JNIEnv* env;  {
    if (jvm==NULL) initJVM();     JNIEnv* env = NULL;
   
      if (jvm == NULL)
      {
         initJVM ();
   
         if (jvm == NULL)
            return NULL;
      }
   
    jvm->AttachCurrentThread((void**)&env,NULL);    jvm->AttachCurrentThread((void**)&env,NULL);
   
    *jvp=&jv;    *jvp=&jv;
   
    return env;    return env;
 } }
  
 void JMPIjvm::detachThread() {  void JMPIjvm::detachThread()
   {
    jvm->DetachCurrentThread();    jvm->DetachCurrentThread();
 } }
  
Line 418 
Line 516 
    jstring jjar=env->NewStringUTF((const char*)jar.getCString());    jstring jjar=env->NewStringUTF((const char*)jar.getCString());
    jstring jcln=env->NewStringUTF((const char*)cln.getCString());    jstring jcln=env->NewStringUTF((const char*)cln.getCString());
  
    jclass jcls=(jclass)env->CallStaticObjectMethod(classRefs[23],staticMethodIDs[1],     jclass jcls=(jclass)env->CallStaticObjectMethod(JMPIjvm::jv.JarClassLoaderRef,jv.JarClassLoaderLoad,
       jjar,jcln);       jjar,jcln);
    if (env->ExceptionCheck()) {    if (env->ExceptionCheck()) {
       env->ExceptionDescribe();       env->ExceptionDescribe();
Line 542 
Line 640 
          }          }
       }       }
       else {       else {
            DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::checkException: exiting..."<<PEGASUS_STD(endl));
          env->ExceptionDescribe();          env->ExceptionDescribe();
          exit(13);          exit(13);
       }       }
Line 615 
Line 714 
  
 void throwCimException(JNIEnv *jEnv, CIMException & e) { void throwCimException(JNIEnv *jEnv, CIMException & e) {
       JMPIjvm::cacheIDs(jEnv);       JMPIjvm::cacheIDs(jEnv);
       jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],(jint)e.getCode());        jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,(jint)e.getCode());
       jEnv->Throw((jthrowable)ev);       jEnv->Throw((jthrowable)ev);
 } }
  
 void throwFailedException(JNIEnv *jEnv) { void throwFailedException(JNIEnv *jEnv) {
       JMPIjvm::cacheIDs(jEnv);       JMPIjvm::cacheIDs(jEnv);
       jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],1);        jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,1);
       jEnv->Throw((jthrowable)ev);       jEnv->Throw((jthrowable)ev);
 } }
  
 void throwNotSupportedException(JNIEnv *jEnv) { void throwNotSupportedException(JNIEnv *jEnv) {
       JMPIjvm::cacheIDs(jEnv);       JMPIjvm::cacheIDs(jEnv);
       jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],7);        jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,7);
       jEnv->Throw((jthrowable)ev);       jEnv->Throw((jthrowable)ev);
 } }
  
Line 642 
Line 741 
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new
   (JNIEnv *jEnv, jobject jThs) {   (JNIEnv *jEnv, jobject jThs) {
    jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[41]);     JMPIjvm::cacheIDs(jEnv);
      jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNew);
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS
   (JNIEnv *jEnv, jobject jThs, jstring jM) {   (JNIEnv *jEnv, jobject jThs, jstring jM) {
    jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[42],jM);     JMPIjvm::cacheIDs(jEnv);
      jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewSt,jM);
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO
   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {
    jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[43],jM,jO1);     JMPIjvm::cacheIDs(jEnv);
      jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStOb,jM,jO1);
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO
   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {
    jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[44],jM,jO1,jO2);     JMPIjvm::cacheIDs(jEnv);
      jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObOb,jM,jO1,jO2);
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO
   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {   (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {
    jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[45],jM,jO1,jO2,jO3);     JMPIjvm::cacheIDs(jEnv);
      jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObObOb,jM,jO1,jO2,jO3);
 } }
  
  
Line 675 
Line 779 
  
 CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) { CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) {
    CIMPropertyList pl;    CIMPropertyList pl;
   
    if (l) {    if (l) {
       Array<CIMName> n;       Array<CIMName> n;
   
       for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {       for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {
          jstring jObj=(jstring)jEnv->GetObjectArrayElement(l,i);          jstring jObj=(jstring)jEnv->GetObjectArrayElement(l,i);
          const char *pn=jEnv->GetStringUTFChars(jObj,NULL);          const char *pn=jEnv->GetStringUTFChars(jObj,NULL);
   
          n.append(pn);          n.append(pn);
   
          jEnv->ReleaseStringUTFChars(jObj,pn);          jEnv->ReleaseStringUTFChars(jObj,pn);
       }       }
   
       pl.set(n);       pl.set(n);
    }    }
   
    return pl;    return pl;
 } }
  
Line 942 
Line 1052 
    String            query(str);    String            query(str);
  
    jEnv->ReleaseStringUTFChars(jQuery,str);    jEnv->ReleaseStringUTFChars(jQuery,str);
   
    str=jEnv->GetStringUTFChars(jQl,NULL);    str=jEnv->GetStringUTFChars(jQl,NULL);
  
    String ql(str);    String ql(str);
Line 971 
Line 1082 
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
    const char       *str = jEnv->GetStringUTFChars(jN,NULL);    const char       *str = jEnv->GetStringUTFChars(jN,NULL);
      CIMName           prop(str);
   
      jEnv->ReleaseStringUTFChars(jN,str);
  
    try {    try {
       CIMName prop(str);  
       CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));       CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
       jEnv->ReleaseStringUTFChars(jN,str);  
  
       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
    }    }
Line 995 
Line 1107 
    CIMName           pName(str);    CIMName           pName(str);
  
    jEnv->ReleaseStringUTFChars(jPn,str);    jEnv->ReleaseStringUTFChars(jPn,str);
   
    try {    try {
       ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);       ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);
    }    }
Line 1004 
Line 1117 
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod
   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut)   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
Line 1015 
Line 1130 
    Array<CIMParamValue> in;    Array<CIMParamValue> in;
    Array<CIMParamValue> out;    Array<CIMParamValue> out;
  
    for (int i = 0, m = jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i < m; i++) {     for (int i = 0, m = jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i < m; i++) {
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jobject jProp = jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);         jobject jProp = jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
  
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jint         jp = jEnv->CallIntMethod(jProp,instanceMethodIDs[29]);         jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
  
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
Line 1037 
Line 1152 
          const CIMValue       v    = parm.getValue();          const CIMValue       v    = parm.getValue();
          CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());          CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
          jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);          jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
          jobject              prop = jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jp);           jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
  
          jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);           jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
       }       }
       return DEBUG_ConvertCToJava (CIMValue*, jint, val);       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
    }    }
Line 1052 
Line 1167 
   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,
         jobjectArray jIn, jobjectArray jOut)         jobjectArray jIn, jobjectArray jOut)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
Line 1069 
Line 1186 
        jobject jArg=jEnv->GetObjectArrayElement(jIn,i);        jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jint           jp = jEnv->CallIntMethod(jArg,instanceMethodIDs[39]);         jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
  
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
Line 1084 
Line 1201 
          jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);          jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
  
          jEnv->SetObjectArrayElement(jOut,i,          jEnv->SetObjectArrayElement(jOut,i,
                                      jEnv->NewObject(classRefs[29],instanceMethodIDs[40],jParm));                                       jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
       }       }
       return DEBUG_ConvertCToJava (CIMValue*, jint, val);       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
    }    }
Line 1101 
Line 1218 
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
   
    CIMName assocClass(str);    CIMName assocClass(str);
  
    jEnv->ReleaseStringUTFChars(jAssocClass,str);    jEnv->ReleaseStringUTFChars(jAssocClass,str);
Line 1140 
Line 1256 
    return 0;    return 0;
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIM__1associators  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators
   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
Line 1150 
Line 1266 
    OperationContext  ctx;    OperationContext  ctx;
    CIMPropertyList   pl  = getList(jEnv,jPl);    CIMPropertyList   pl  = getList(jEnv,jPl);
    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
   
    CIMName assocClass(str);    CIMName assocClass(str);
  
    jEnv->ReleaseStringUTFChars(jAssocClass,str);    jEnv->ReleaseStringUTFChars(jAssocClass,str);
Line 1205 
Line 1320 
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);    const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
   
    CIMName assocClass(str);    CIMName assocClass(str);
  
    jEnv->ReleaseStringUTFChars(jAssocClass,str);    jEnv->ReleaseStringUTFChars(jAssocClass,str);
Line 1281 
Line 1395 
    String       name(str);    String       name(str);
  
    jEnv->ReleaseStringUTFChars(jName,str);    jEnv->ReleaseStringUTFChars(jName,str);
   
    str=jEnv->GetStringUTFChars(jNs,NULL);    str=jEnv->GetStringUTFChars(jNs,NULL);
  
    String ns(str);    String ns(str);
Line 1422 
Line 1537 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
  
    for (int i=0,s=cls->getPropertyCount(); i<s; i++) {    for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
       CIMProperty *cp  = new CIMProperty(cls->getProperty(i));       CIMProperty *cp  = new CIMProperty(cls->getProperty(i));
       jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);       jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
  
       jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);        jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
  
       jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);        jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
  
    return jVec;    return jVec;
Line 1448 
Line 1565 
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
  
    for (int i=cls->getPropertyCount()-1; i>=0; i--) {    for (int i=cls->getPropertyCount()-1; i>=0; i--) {
       cls->removeProperty(i);       cls->removeProperty(i);
    }    }
    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {     for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
       JMPIjvm::checkException(jEnv);       JMPIjvm::checkException(jEnv);
  
       jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));        jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
  
       jint         jp = jEnv->CallIntMethod(o,instanceMethodIDs[29]);        jint         jp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
  
       JMPIjvm::checkException(jEnv);       JMPIjvm::checkException(jEnv);
Line 1471 
Line 1590 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
  
    for (int i=0,s=cls->getQualifierCount(); i<s; i++) {    for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
       CIMQualifier *cq   = new CIMQualifier(cls->getQualifier(i));       CIMQualifier *cq   = new CIMQualifier(cls->getQualifier(i));
       jint          jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq);       jint          jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq);
       jobject       qual = jEnv->NewObject(classRefs[26],instanceMethodIDs[37],jCq);        jobject       qual = jEnv->NewObject(JMPIjvm::jv.CIMQualifierClassRef,JMPIjvm::jv.CIMQualifierNewI,jCq);
  
       jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],qual);        jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,qual);
    }    }
  
    return jVec;    return jVec;
Line 1509 
Line 1630 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
  
    if (cls->hasKeys()) {    if (cls->hasKeys()) {
Line 1520 
Line 1643 
             CIMProperty *cp  = new CIMProperty(cls->getProperty(pos));             CIMProperty *cp  = new CIMProperty(cls->getProperty(pos));
             jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);             jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
  
             jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);              jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
  
             jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);              jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
          }          }
       }       }
    }    }
Line 1679 
Line 1802 
       (JNIEnv *jEnv, jobject jThs, jstring jN)       (JNIEnv *jEnv, jobject jThs, jstring jN)
 { {
    const char *str=jEnv->GetStringUTFChars(jN,NULL);    const char *str=jEnv->GetStringUTFChars(jN,NULL);
      CIMInstance *ci = new CIMInstance(CIMName(str));
  
    return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(CIMName(str)));     jEnv->ReleaseStringUTFChars(jN,str);
   
      return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
 } }
  
 //Added by Andy Viciu //Added by Andy Viciu
Line 1690 
Line 1816 
    CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);    CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
    const char  *str = jEnv->GetStringUTFChars(jN,NULL);    const char  *str = jEnv->GetStringUTFChars(jN,NULL);
  
      jEnv->ReleaseStringUTFChars(jN,str);
   
    /* NOT SUPPORTED AND NOT NEEDED*/    /* NOT SUPPORTED AND NOT NEEDED*/
 } }
  
Line 1702 
Line 1830 
    Uint32       pos = ci->findProperty(CIMName(str));    Uint32       pos = ci->findProperty(CIMName(str));
  
    try {    try {
       if (pos!=PEG_NOT_FOUND) {        if (pos!=PEG_NOT_FOUND)
         {
          CIMProperty cp=ci->getProperty(pos);          CIMProperty cp=ci->getProperty(pos);
   
          if (cp.getType()==cv->getType())          if (cp.getType()==cv->getType())
            {
             cp.setValue(*cv);             cp.setValue(*cv);
          else {           }
            else
            {
             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");
             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));
  
             throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));             throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
          }          }
   
          ci->removeProperty(pos);          ci->removeProperty(pos);
          ci->addProperty(cp);          ci->addProperty(cp);
       }       }
       else {        else
         {
          CIMProperty *cp=new CIMProperty(CIMName(str),*cv);          CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
          ci->addProperty(*cp);          ci->addProperty(*cp);
       }       }
Line 1741 
Line 1876 
    try {    try {
       Uint32 pos = ci->findProperty(CIMName(str));       Uint32 pos = ci->findProperty(CIMName(str));
  
       if (pos != PEG_NOT_FOUND) {        if (pos != PEG_NOT_FOUND)
         {
          CIMProperty *cp = new CIMProperty(ci->getProperty(pos));          CIMProperty *cp = new CIMProperty(ci->getProperty(pos));
  
          rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);          rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
Line 1757 
Line 1893 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
  
    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
Line 1764 
Line 1902 
          CIMProperty *cp  = new CIMProperty(ci->getProperty(i));          CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
  
          jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);           jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
  
          jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);           jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
       }       }
    }    }
  
Line 1792 
Line 1930 
    jint         rv  = -1;    jint         rv  = -1;
    Uint32       pos = ci->findQualifier(String(str));    Uint32       pos = ci->findQualifier(String(str));
  
    if (pos!=PEG_NOT_FOUND) {     if (pos!=PEG_NOT_FOUND)
      {
       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos)));       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos)));
    }    }
  
Line 1813 
Line 1952 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
  
    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
       CIMProperty *cp  = new CIMProperty(ci->getProperty(i));       CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
       jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);       jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
  
       jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);        jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
  
       jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);        jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
  
    return jVec;    return jVec;
Line 1932 
Line 2073 
  
    if (str)    if (str)
       cop->setClassName(str);       cop->setClassName(str);
   
    jEnv->ReleaseStringUTFChars(jCn,str);    jEnv->ReleaseStringUTFChars(jCn,str);
  
    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
Line 1999 
Line 2141 
    const char    *str = jEnv->GetStringUTFChars(jName,NULL);    const char    *str = jEnv->GetStringUTFChars(jName,NULL);
  
    cop->setHost(String(str));    cop->setHost(String(str));
   
    jEnv->ReleaseStringUTFChars(jName,str);    jEnv->ReleaseStringUTFChars(jName,str);
 } }
  
Line 2020 
Line 2163 
    const char    *str = jEnv->GetStringUTFChars(jName,NULL);    const char    *str = jEnv->GetStringUTFChars(jName,NULL);
  
    cop->setClassName(String(str));    cop->setClassName(String(str));
   
    jEnv->ReleaseStringUTFChars(jName,str);    jEnv->ReleaseStringUTFChars(jName,str);
 } }
  
Line 2041 
Line 2185 
    const char    *str = jEnv->GetStringUTFChars(jName,NULL);    const char    *str = jEnv->GetStringUTFChars(jName,NULL);
  
    cop->setNameSpace(CIMNamespaceName(str));    cop->setNameSpace(CIMNamespaceName(str));
   
    jEnv->ReleaseStringUTFChars(jName,str);    jEnv->ReleaseStringUTFChars(jName,str);
 } }
  
Line 2054 
Line 2199 
  
    keyBindings.append(CIMKeyBinding(str,*cv));    keyBindings.append(CIMKeyBinding(str,*cv));
    cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));    cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
   
    jEnv->ReleaseStringUTFChars(jId,str);    jEnv->ReleaseStringUTFChars(jId,str);
 } }
  
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMObjectPath              *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath              *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    const Array<CIMKeyBinding> &akb = cop->getKeyBindings();    const Array<CIMKeyBinding> &akb = cop->getKeyBindings();
  
Line 2092 
Line 2240 
          cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());          cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
  
       jint    jCp  = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);       jint    jCp  = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
       jobject prop = jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);        jobject prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
  
       jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);        jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
  
    return jVec;    return jVec;
Line 2108 
Line 2256 
    const char                 *strKeyName = jEnv->GetStringUTFChars(jStr,NULL);    const char                 *strKeyName = jEnv->GetStringUTFChars(jStr,NULL);
    jstring                     retStr     = NULL;    jstring                     retStr     = NULL;
  
    for (Uint32 i=0,s=akb.size(); i<s; i++) {     for (Uint32 i=0,s=akb.size(); i<s; i++)
      {
       const String &n=akb[i].getName().getString();       const String &n=akb[i].getName().getString();
       if (n==String(strKeyName)) {  
         if (n==String(strKeyName))
         {
          retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());          retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
          break;          break;
       }       }
Line 2128 
Line 2279 
    CIMObjectPath *cop    = new CIMObjectPath();    CIMObjectPath *cop    = new CIMObjectPath();
  
    cop->set(String(strCop));    cop->set(String(strCop));
   
    jEnv->ReleaseStringUTFChars(jStr,strCop);    jEnv->ReleaseStringUTFChars(jStr,strCop);
  
    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
Line 2136 
Line 2288 
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    Array<CIMKeyBinding>  akb;    Array<CIMKeyBinding>  akb;
  
    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {     for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
       jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));        jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
  
       jint         jCp = jEnv->CallIntMethod(o,instanceMethodIDs[29]);        jint         jCp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp);       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp);
  
       akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));       akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
Line 2363 
Line 2517 
    String         n(str);    String         n(str);
  
    cp->setParameterName(n);    cp->setParameterName(n);
   
    jEnv->ReleaseStringUTFChars(jN,str);    jEnv->ReleaseStringUTFChars(jN,str);
 } }
  
Line 2409 
Line 2564 
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
 { {
    try {  
       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
       const char  *str = jEnv->GetStringUTFChars(jN,NULL);       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
       CIMProperty *cp  = 0;       CIMProperty *cp  = 0;
      jint         jCp = -1;
  
      try {
       if (cv->getType()!=CIMTYPE_REFERENCE)       if (cv->getType()!=CIMTYPE_REFERENCE)
         {
          cp=new CIMProperty(String(str),*cv);          cp=new CIMProperty(String(str),*cv);
       else {        }
          if (!cv->isArray()) {        else
         {
            if (!cv->isArray())
            {
             CIMObjectPath cop;             CIMObjectPath cop;
   
             cv->get(cop);             cv->get(cop);
             cp=new CIMProperty(String(str),*cv,0, cop.getClassName());             cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
          }          }
          else {           else
            {
             throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");             throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
          }          }
       }       }
  
       jEnv->ReleaseStringUTFChars(jN,str);        jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
   
       return DEBUG_ConvertCToJava (CIMProperty*, jint, cp);  
    }    }
    Catch(jEnv);    Catch(jEnv);
  
    return -1;     jEnv->ReleaseStringUTFChars(jN,str);
   
      return jCp;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
Line 2613 
Line 2775 
    const char  *str = jEnv->GetStringUTFChars(jN,NULL);    const char  *str = jEnv->GetStringUTFChars(jN,NULL);
  
    cp->setName(CIMName(str));    cp->setName(CIMName(str));
   
    jEnv->ReleaseStringUTFChars(jN,str);    jEnv->ReleaseStringUTFChars(jN,str);
 } }
  
Line 2828 
Line 2991 
       dt=new CIMDateTime();       dt=new CIMDateTime();
    else    else
       dt=new CIMDateTime(String(str));       dt=new CIMDateTime(String(str));
   
    jEnv->ReleaseStringUTFChars(jN,str);    jEnv->ReleaseStringUTFChars(jN,str);
  
    return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);    return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
Line 3111 
Line 3275 
    for (jsize i=0;i<len;i++) {    for (jsize i=0;i<len;i++) {
       jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);       jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);
       const char *str=jEnv->GetStringUTFChars(jsA,NULL);       const char *str=jEnv->GetStringUTFChars(jsA,NULL);
   
       strA.append(String(str));       strA.append(String(str));
   
       jEnv->ReleaseStringUTFChars(jsA,str);       jEnv->ReleaseStringUTFChars(jsA,str);
    }    }
  
Line 3171 
Line 3337 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
       (JNIEnv *jEnv, jobject jThs, jint jV)       (JNIEnv *jEnv, jobject jThs, jint jV)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);    CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
  
    if (cv->isNull())    if (cv->isNull())
Line 3183 
Line 3351 
       case CIMTYPE_BOOLEAN:       case CIMTYPE_BOOLEAN:
          Boolean bo;          Boolean bo;
          cv->get(bo);          cv->get(bo);
          return jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo);           return jEnv->NewObject(JMPIjvm::jv.BooleanClassRef,JMPIjvm::jv.BooleanNewZ,bo);
          break;          break;
       case CIMTYPE_SINT8:       case CIMTYPE_SINT8:
          Sint8 s8;          Sint8 s8;
          cv->get(s8);          cv->get(s8);
          return jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8);           return jEnv->NewObject(JMPIjvm::jv.ByteClassRef,JMPIjvm::jv.ByteNewB,s8);
          break;          break;
       case CIMTYPE_UINT8:       case CIMTYPE_UINT8:
          Uint8 u8;          Uint8 u8;
          cv->get(u8);          cv->get(u8);
          return jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8);           return jEnv->NewObject(JMPIjvm::jv.UnsignedInt8ClassRef,JMPIjvm::jv.UnsignedInt8NewS,u8);
          break;          break;
       case CIMTYPE_SINT16:       case CIMTYPE_SINT16:
          Sint16 s16;          Sint16 s16;
          cv->get(s16);          cv->get(s16);
          return jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16);           return jEnv->NewObject(JMPIjvm::jv.ShortClassRef,JMPIjvm::jv.ShortNewS,s16);
          break;          break;
       case CIMTYPE_UINT16:       case CIMTYPE_UINT16:
          Uint16 u16;          Uint16 u16;
          cv->get(u16);          cv->get(u16);
          return jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16);           return jEnv->NewObject(JMPIjvm::jv.UnsignedInt16ClassRef,JMPIjvm::jv.UnsignedInt16NewI,u16);
          break;          break;
       case CIMTYPE_SINT32:       case CIMTYPE_SINT32:
          Sint32 s32;          Sint32 s32;
          cv->get(s32);          cv->get(s32);
          return jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32);           return jEnv->NewObject(JMPIjvm::jv.IntegerClassRef,JMPIjvm::jv.IntegerNewI,s32);
          break;          break;
       case CIMTYPE_UINT32:       case CIMTYPE_UINT32:
          Uint32 u32;          Uint32 u32;
          cv->get(u32);          cv->get(u32);
          return jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32);           return jEnv->NewObject(JMPIjvm::jv.UnsignedInt32ClassRef,JMPIjvm::jv.UnsignedInt32NewJ,u32);
          break;          break;
       case CIMTYPE_SINT64:       case CIMTYPE_SINT64:
          Sint64 s64;          Sint64 s64;
          cv->get(s64);          cv->get(s64);
          return jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64);           return jEnv->NewObject(JMPIjvm::jv.LongClassRef,JMPIjvm::jv.LongNewJ,s64);
          break;          break;
       case CIMTYPE_UINT64: {       case CIMTYPE_UINT64: {
             Uint64 u64;             Uint64 u64;
             cv->get(u64);             cv->get(u64);
             jobject big=jEnv->CallStaticObjectMethod(classRefs[14],staticMethodIDs[0],u64);              jobject big=jEnv->CallStaticObjectMethod(JMPIjvm::jv.BigIntegerClassRef,JMPIjvm::jv.BigIntegerValueOf,u64);
             return jEnv->NewObject(classRefs[11],instanceMethodIDs[11],big);              return jEnv->NewObject(JMPIjvm::jv.UnsignedInt64ClassRef,JMPIjvm::jv.UnsignedInt64NewBi,big);
          }          }
          break;          break;
       case CIMTYPE_REAL32:       case CIMTYPE_REAL32:
          float f;          float f;
          cv->get(f);          cv->get(f);
          return jEnv->NewObject(classRefs[6],instanceMethodIDs[6],f);           return jEnv->NewObject(JMPIjvm::jv.FloatClassRef,JMPIjvm::jv.FloatNewF,f);
          break;          break;
       case CIMTYPE_REAL64:       case CIMTYPE_REAL64:
          double d;          double d;
          cv->get(d);          cv->get(d);
          return jEnv->NewObject(classRefs[7],instanceMethodIDs[7],d);           return jEnv->NewObject(JMPIjvm::jv.DoubleClassRef,JMPIjvm::jv.DoubleNewD,d);
          break;          break;
       case CIMTYPE_STRING: {       case CIMTYPE_STRING: {
             String s;             String s;
Line 3249 
Line 3417 
             CIMObjectPath ref;             CIMObjectPath ref;
             cv->get(ref);             cv->get(ref);
             jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref));             jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref));
             return jEnv->NewObject(classRefs[12],instanceMethodIDs[12],jOp);              return jEnv->NewObject(JMPIjvm::jv.CIMObjectPathClassRef,JMPIjvm::jv.CIMObjectPathNewI,jOp);
          }          }
          break;          break;
       case CIMTYPE_CHAR16:       case CIMTYPE_CHAR16:
Line 3259 
Line 3427 
             CIMDateTime dt;             CIMDateTime dt;
             cv->get(dt);             cv->get(dt);
             jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt));             jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt));
             return jEnv->NewObject(classRefs[24],instanceMethodIDs[35],jDT);              return jEnv->NewObject(JMPIjvm::jv.CIMDateTimeClassRef,JMPIjvm::jv.CIMDateTimeNewI,jDT);
          }          }
          break;          break;
       case CIMTYPE_OBJECT:       case CIMTYPE_OBJECT:
Line 3275 
Line 3443 
             Array<Boolean> bo;             Array<Boolean> bo;
             cv->get(bo);             cv->get(bo);
             int s=bo.size();             int s=bo.size();
             jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[1],0);              jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.BooleanClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i,
                   jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo[i]));                    jEnv->NewObject(JMPIjvm::jv.BooleanClassRef,JMPIjvm::jv.BooleanNewZ,bo[i]));
             return jbooleanA;             return jbooleanA;
          }          }
          break;          break;
Line 3285 
Line 3453 
             Array<Sint8> s8;             Array<Sint8> s8;
             cv->get(s8);             cv->get(s8);
             int s=s8.size();             int s=s8.size();
             jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[2],0);              jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.ByteClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i,
                jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8[i]));                 jEnv->NewObject(JMPIjvm::jv.ByteClassRef,JMPIjvm::jv.ByteNewB,s8[i]));
             return jbyteA;             return jbyteA;
          }          }
          break;          break;
Line 3295 
Line 3463 
             Array<Uint8> u8;             Array<Uint8> u8;
             cv->get(u8);             cv->get(u8);
             int s=u8.size();             int s=u8.size();
             jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[8],0);              jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.UnsignedInt8ClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
                jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8[i]));                 jEnv->NewObject(JMPIjvm::jv.UnsignedInt8ClassRef,JMPIjvm::jv.UnsignedInt8NewS,u8[i]));
             return jshortA;             return jshortA;
          }          }
          break;          break;
Line 3305 
Line 3473 
             Array<Sint16> s16;             Array<Sint16> s16;
             cv->get(s16);             cv->get(s16);
             int s=s16.size();             int s=s16.size();
             jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[3],0);              jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.ShortClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
                jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16[i]));                 jEnv->NewObject(JMPIjvm::jv.ShortClassRef,JMPIjvm::jv.ShortNewS,s16[i]));
             return jshortA;             return jshortA;
          }          }
          break;          break;
Line 3315 
Line 3483 
             Array<Uint16> u16;             Array<Uint16> u16;
             cv->get(u16);             cv->get(u16);
             int s=u16.size();             int s=u16.size();
             jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[9],0);              jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.UnsignedInt16ClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
                jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16[i]));                 jEnv->NewObject(JMPIjvm::jv.UnsignedInt16ClassRef,JMPIjvm::jv.UnsignedInt16NewI,u16[i]));
             return jintA;             return jintA;
          }          }
          break;          break;
Line 3325 
Line 3493 
             Array<Sint32> s32;             Array<Sint32> s32;
             cv->get(s32);             cv->get(s32);
             int s=s32.size();             int s=s32.size();
             jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[4],0);              jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.IntegerClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
                jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32[i]));                 jEnv->NewObject(JMPIjvm::jv.IntegerClassRef,JMPIjvm::jv.IntegerNewI,s32[i]));
             return jintA;             return jintA;
          }          }
          break;          break;
Line 3335 
Line 3503 
             Array<Uint32> u32;             Array<Uint32> u32;
             cv->get(u32);             cv->get(u32);
             int s=u32.size();             int s=u32.size();
             jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[10],0);              jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.UnsignedInt32ClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
                jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32[i]));                 jEnv->NewObject(JMPIjvm::jv.UnsignedInt32ClassRef,JMPIjvm::jv.UnsignedInt32NewJ,u32[i]));
             return jlongA;             return jlongA;
          }          }
          break;          break;
Line 3345 
Line 3513 
             Array<Sint64> s64;             Array<Sint64> s64;
             cv->get(s64);             cv->get(s64);
             int s=s64.size();             int s=s64.size();
             jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[5],0);              jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.LongClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
                jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64[i]));                 jEnv->NewObject(JMPIjvm::jv.LongClassRef,JMPIjvm::jv.LongNewJ,s64[i]));
             return jlongA;             return jlongA;
          }          }
          break;          break;
Line 3358 
Line 3526 
             Array<Real32> r32;             Array<Real32> r32;
             cv->get(r32);             cv->get(r32);
             int s=r32.size();             int s=r32.size();
             jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[6],0);              jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.FloatClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i,
                jEnv->NewObject(classRefs[6],instanceMethodIDs[6],r32[i]));                 jEnv->NewObject(JMPIjvm::jv.FloatClassRef,JMPIjvm::jv.FloatNewF,r32[i]));
             return jfloatA;             return jfloatA;
          }          }
          break;          break;
Line 3368 
Line 3536 
             Array<Real64> r64;             Array<Real64> r64;
             cv->get(r64);             cv->get(r64);
             int s=r64.size();             int s=r64.size();
             jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[7],0);              jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.DoubleClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i,
                jEnv->NewObject(classRefs[7],instanceMethodIDs[7],r64[i]));                 jEnv->NewObject(JMPIjvm::jv.DoubleClassRef,JMPIjvm::jv.DoubleNewD,r64[i]));
             return jdoubleA;             return jdoubleA;
          }          }
          break;          break;
Line 3378 
Line 3546 
             Array<String> str;             Array<String> str;
             cv->get(str);             cv->get(str);
             int s=str.size();             int s=str.size();
             jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[22],0);              jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,JMPIjvm::jv.StringClassRef,0);
             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i,             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i,
                jEnv->NewStringUTF(str[i].getCString()));                jEnv->NewStringUTF(str[i].getCString()));
             return jstringA;             return jstringA;
Line 3447 
Line 3615 
    }    }
    Sint32 p=hostName_.reverseFind(':');    Sint32 p=hostName_.reverseFind(':');
    if (p>=0) {    if (p>=0) {
       if (isdigit(hostName_[p+1]))        if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9'))
          port_=atoi(hostName_.subString(p+1).getCString());          port_=atoi(hostName_.subString(p+1).getCString());
       hostName_.remove(p);       hostName_.remove(p);
    }    }
Line 3522 
Line 3690 
  
    cNs->port_=0;    cNs->port_=0;
    cNs->hostName_=str;    cNs->hostName_=str;
   
    jEnv->ReleaseStringUTFChars(jHn,str);    jEnv->ReleaseStringUTFChars(jHn,str);
 } }
  
Line 3532 
Line 3701 
    const char *str = jEnv->GetStringUTFChars(jN,NULL);    const char *str = jEnv->GetStringUTFChars(jN,NULL);
  
    cNs->nameSpace_=str;    cNs->nameSpace_=str;
   
    jEnv->ReleaseStringUTFChars(jN,str);    jEnv->ReleaseStringUTFChars(jN,str);
 } }
  
Line 3624 
Line 3794 
  
 void checkNs(CIMObjectPath *cop, jint jNs) { void checkNs(CIMObjectPath *cop, jint jNs) {
    if (cop->getNameSpace().isNull()) {    if (cop->getNameSpace().isNull()) {
       _nameSpace *ns=(_nameSpace*)jNs;        _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
       cop->setNameSpace(CIMNamespaceName(ns->nameSpace()));  
         cop->setNameSpace(CIMNamespaceName(cNs->nameSpace()));
    }    }
 } }
  
Line 3633 
Line 3804 
   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw)   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw)
 { {
    _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);    _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
   
    const char *un=jEnv->GetStringUTFChars(jUn,NULL);    const char *un=jEnv->GetStringUTFChars(jUn,NULL);
    const char *pw=jEnv->GetStringUTFChars(jPw,NULL);    const char *pw=jEnv->GetStringUTFChars(jPw,NULL);
      jint        jCc = 0;
  
    try {    try {
       JMPIjvm::cacheIDs(jEnv);  
       CIMClient *cc=new CIMClient();       CIMClient *cc=new CIMClient();
   
       cc->connect(cNs->hostName(),cNs->port(),un,pw);       cc->connect(cNs->hostName(),cNs->port(),un,pw);
       jEnv->ReleaseStringUTFChars(jUn,un);  
       jEnv->ReleaseStringUTFChars(jPw,pw);        jCc = DEBUG_ConvertCToJava (CIMClient*, jint, cc);
       return DEBUG_ConvertCToJava (CIMClient*, jint, cc);  
    }    }
    Catch(jEnv);    Catch(jEnv);
    return 0;  
      jEnv->ReleaseStringUTFChars(jUn,un);
      jEnv->ReleaseStringUTFChars(jPw,pw);
   
      return jCc;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
Line 3929 
Line 4103 
    Catch(jEnv);    Catch(jEnv);
 } }
  
   
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn)   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn)
 { {
Line 3937 
Line 4110 
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
    CIMName        pName(str);    CIMName        pName(str);
      jint           jCv = 0;
  
    jEnv->ReleaseStringUTFChars(jPn,str);  
    try {    try {
       checkNs(cop,jNs);       checkNs(cop,jNs);
   
       CIMValue *val=new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));       CIMValue *val=new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
       return DEBUG_ConvertCToJava (CIMValue*, jint, val);  
         jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
    }    }
    Catch(jEnv);    Catch(jEnv);
  
    return 0;     jEnv->ReleaseStringUTFChars(jPn,str);
   
      return jCv;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
Line 3958 
Line 4135 
    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
    CIMName        pName(str);    CIMName        pName(str);
  
    jEnv->ReleaseStringUTFChars(jPn,str);  
    try {    try {
       checkNs(cop,jNs);       checkNs(cop,jNs);
       cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);       cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
    }    }
    Catch(jEnv);    Catch(jEnv);
   
      jEnv->ReleaseStringUTFChars(jPn,str);
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut)   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    const char    *str = jEnv->GetStringUTFChars(jMn,NULL);    const char    *str = jEnv->GetStringUTFChars(jMn,NULL);
    CIMName        method(str);    CIMName        method(str);
      jint                  jCv = 0;
    jEnv->ReleaseStringUTFChars(jMn,str);  
   
    Array<CIMParamValue> in;    Array<CIMParamValue> in;
    Array<CIMParamValue> out;    Array<CIMParamValue> out;
  
    for (int i=0,m=jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i<m; i++) {     for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i<m; i++) {
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jobject jProp=jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);         jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jint         jp = jEnv->CallIntMethod(jProp,instanceMethodIDs[29]);         jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
  
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        in.append(CIMParamValue(p->getName().getString(),p->getValue()));        in.append(CIMParamValue(p->getName().getString(),p->getValue()));
    }    }
   
    try {    try {
       checkNs(cop,jNs);       checkNs(cop,jNs);
   
       CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));       CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
  
       for (int i=0,m=out.size(); i<m; i++) {       for (int i=0,m=out.size(); i<m; i++) {
Line 4001 
Line 4181 
          const CIMValue       v    = parm.getValue();          const CIMValue       v    = parm.getValue();
          CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());          CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
          jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);          jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
            jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
  
          jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jp);           jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
   
          jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);  
       }       }
       return DEBUG_ConvertCToJava (CIMValue*, jint, val);  
         jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
    }    }
    Catch(jEnv);    Catch(jEnv);
  
    return 0;     jEnv->ReleaseStringUTFChars(jMn,str);
   
      return jCv;
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,
         jobjectArray jIn, jobjectArray jOut)         jobjectArray jIn, jobjectArray jOut)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    const char    *str = jEnv->GetStringUTFChars(jMn,NULL);    const char    *str = jEnv->GetStringUTFChars(jMn,NULL);
    CIMName        method(str);    CIMName        method(str);
      jint                  jCv = 0;
    jEnv->ReleaseStringUTFChars(jMn,str);  
   
    Array<CIMParamValue> in;    Array<CIMParamValue> in;
    Array<CIMParamValue> out;    Array<CIMParamValue> out;
  
Line 4033 
Line 4215 
        jobject jArg=jEnv->GetObjectArrayElement(jIn,i);        jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
  
        jint           jp = jEnv->CallIntMethod(jArg,instanceMethodIDs[39]);         jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
  
        JMPIjvm::checkException(jEnv);        JMPIjvm::checkException(jEnv);
Line 4050 
Line 4232 
  
          jEnv->SetObjectArrayElement(jOut,          jEnv->SetObjectArrayElement(jOut,
                                      i,                                      i,
                                      jEnv->NewObject(classRefs[29],instanceMethodIDs[40],jParm));                                       jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
       }       }
       return DEBUG_ConvertCToJava (CIMValue*, jint, val);        jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
    }    }
    Catch(jEnv);    Catch(jEnv);
  
    return 0;     jEnv->ReleaseStringUTFChars(jMn,str);
   
      return jCv;
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
Line 4067 
Line 4251 
    const char    *str = jEnv->GetStringUTFChars(jQuery,NULL);    const char    *str = jEnv->GetStringUTFChars(jQuery,NULL);
    String         query(str);    String         query(str);
  
 /* Note:  /* @NOTE
 ** This does not work for some reason on the client java code: ** This does not work for some reason on the client java code:
 **   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::Java_org_pegasus_jmpi_CIMClient__1execQuery: jEnv = "<<PEGASUS_STD(hex)<<(int)jEnv<<", jThs = "<<(int)jThs<<PEGASUS_STD(dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD(hex)<<(int)jQuery<<", jQl = "<<(int)jQl<<PEGASUS_STD(dec)<<PEGASUS_STD(endl)); **   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::Java_org_pegasus_jmpi_CIMClient__1execQuery: jEnv = "<<PEGASUS_STD(hex)<<(int)jEnv<<", jThs = "<<(int)jThs<<PEGASUS_STD(dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD(hex)<<(int)jQuery<<", jQl = "<<(int)jQl<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 ** What does work is: ** What does work is:
 **   printf ("This is a test\n"); **   printf ("This is a test\n");
   **
   ** To debug these JNI functions insert the following:
   **    if (getenv ("PEGASUS_JMPI_GDB"))
   **    {
   **       bool fLoop = true;
   **       int  i     = 0;
   **
   **       while (fLoop)
   **       {
   **          i = 1;
   **       }
   **    }
   ** Export the variable PEGASUS_JMPI_GDB=1.
   ** Start gdb in another process.
   **    shell ps -efl
   **    att <ps number>
   **    set fLoop = 0
 */ */
  
    jEnv->ReleaseStringUTFChars(jQuery,str);    jEnv->ReleaseStringUTFChars(jQuery,str);
  
    str=jEnv->GetStringUTFChars(jQl,NULL);    str=jEnv->GetStringUTFChars(jQl,NULL);
   
    String ql(str);    String ql(str);
  
    jEnv->ReleaseStringUTFChars(jQl,str);    jEnv->ReleaseStringUTFChars(jQl,str);
Line 4280 
Line 4482 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec)   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec)
 { {
      JMPIjvm::cacheIDs(jEnv);
   
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
    String         ns  = cop->getNameSpace().getString();    String         ns  = cop->getNameSpace().getString();
Line 4295 
Line 4499 
             continue;             continue;
          String x=ns+"/"+n;          String x=ns+"/"+n;
          jstring str=jEnv->NewStringUTF(x.getCString());          jstring str=jEnv->NewStringUTF(x.getCString());
          jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],str);           jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,str);
       }       }
    }    }
    Catch(jEnv);    Catch(jEnv);


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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2