(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.63 and 1.86

version 1.63, 2006/12/03 14:39:39 version 1.86, 2008/12/15 16:01:50
Line 1 
Line 1 
 //%2006////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;  
 // EMC Corporation; VERITAS Software Corporation; The Open Group.  
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  
 // EMC Corporation; Symantec Corporation; The Open Group.  
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // Permission is hereby granted, free of charge, to any person obtaining a
 // of this software and associated documentation files (the "Software"), to  // copy of this software and associated documentation files (the "Software"),
 // deal in the Software without restriction, including without limitation the  // to deal in the Software without restriction, including without limitation
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // sell copies of the Software, and to permit persons to whom the Software is  // and/or sell copies of the Software, and to permit persons to whom the
 // furnished to do so, subject to the following conditions:  // Software is furnished to do so, subject to the following conditions:
 // //
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // The above copyright notice and this permission notice shall be included
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // in all copies or substantial portions of the Software.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
 // //
 //==============================================================================  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   //
   //////////////////////////////////////////////////////////////////////////
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include "JMPIImpl.h" #include "JMPIImpl.h"
  
 #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)  #if defined(PEGASUS_OS_TYPE_WINDOWS)
 #include <Pegasus/Common/DynamicLibrary.h> #include <Pegasus/Common/DynamicLibrary.h>
 #else #else
 #include <dlfcn.h> #include <dlfcn.h>
Line 48 
Line 46 
 #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 59 
  
 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 109 
Line 101 
 /*32*/ "java/lang/Character", /*32*/ "java/lang/Character",
 /*33*/ "org/pegasus/jmpi/OperationContext", /*33*/ "org/pegasus/jmpi/OperationContext",
 /*34*/ "java/lang/Class", /*34*/ "java/lang/Class",
   /*35*/ "java/io/ByteArrayOutputStream",
   /*36*/ "java/io/PrintStream"
 }; };
  
 const METHOD_STRUCT instanceMethodNames[]={ const METHOD_STRUCT instanceMethodNames[]={
 /*00 VectorNew                   */ { /*Vector           */ 0, "<init>",          "()V" },  /*00 VectorNew                      */
 /*01 BooleanNewZ                 */ { /*Boolean          */ 1, "<init>",          "(Z)V" },  { /*Vector                */
 /*02 ByteNewB                    */ { /*Byte             */ 2, "<init>",          "(B)V" },      0,
 /*03 ShortNewS                   */ { /*Short            */ 3, "<init>",          "(S)V" },      "<init>",
 /*04 IntegerNewI                 */ { /*Integer          */ 4, "<init>",          "(I)V" },      "()V" },
 /*05 LongNewJ                    */ { /*Long             */ 5, "<init>",          "(J)V" },  /*01 BooleanNewZ                    */
 /*06 FloatNewF                   */ { /*Float            */ 6, "<init>",          "(F)V" },  { /*Boolean               */
 /*07 DoubleNewD                  */ { /*Double           */ 7, "<init>",          "(D)V" },      1,
 /*08 UnsignedInt8NewS            */ { /*UnsignedInt8     */ 8, "<init>",          "(S)V" },      "<init>",
 /*09 UnsignedInt16NewI           */ { /*UnsignedInt16    */ 9, "<init>",          "(I)V" },      "(Z)V" },
 /*10 UnsignedInt32NewJ           */ { /*UnsignedInt32    */10, "<init>",          "(J)V" },  /*02 ByteNewB                       */
 /*11 UnsignedInt64NewBi          */ { /*UnsignedInt64    */11, "<init>",          "(Ljava/math/BigInteger;)V" },  { /*Byte                  */
 /*12 CIMObjectPathNewJ           */ { /*CIMObjectPath    */12, "<init>",          "(J)V" },      2,
 /*13 CIMExceptionNewSt           */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;)V" },      "<init>",
 /*14 CIMPropertyNewJ             */ { /*CIMProperty      */15, "<init>",          "(J)V" },      "(B)V" },
 /*15 VectorAddElement            */ { /*Vector           */ 0, "addElement",      "(Ljava/lang/Object;)V" },  /*03 ShortNewS                      */
 /*16 VectorElementAt             */ { /*Vector           */ 0, "elementAt",       "(I)Ljava/lang/Object;" },  { /*Short                 */
 /*17 CIMOMHandleNewJSt           */ { /*CIMOMHandle      */16, "<init>",          "(JLjava/lang/String;)V" },      3,
 /*18 CIMExceptionNewI            */ { /*CIMException     */13, "<init>",          "(I)V" },      "<init>",
 /*19 CIMClassNewJ                */ { /*CIMClass         */17, "<init>",          "(J)V" },      "(S)V" },
 /*20 CIMInstanceNewJ             */ { /*CIMInstance      */18, "<init>",          "(J)V" },  /*04 IntegerNewI                    */
 /*21 CIMObjectPathCInst          */ { /*CIMObjectPath    */12, "cInst",           "()J" },  { /*Integer               */
 /*22 CIMInstanceCInst            */ { /*CIMInstance      */18, "cInst",           "()J" },      4,
 /*23 CIMClassCInst               */ { /*CIMClass         */17, "cInst",           "()J" },      "<init>",
 /*24 ObjectToString              */ { /*Object           */20, "toString",        "()Ljava/lang/String;" },      "(I)V" },
 /*25 ThrowableGetMessage         */ { /*Throwable        */21, "getMessage",      "()Ljava/lang/String;" },  /*05 LongNewJ                       */
 /*26 CIMExceptionGetID           */ { /*CIMException     */13, "getID",           "()Ljava/lang/String;" },  { /*Long                  */
 /*27 VectorSize                  */ { /*Vector           */ 0, "size",            "()I" },      5,
 /*28 CIMPropertyCInst            */ { /*CIMProperty      */15, "cInst",           "()J" },      "<init>",
 /*29 CIMOMHandleGetClass         */ { /*CIMOMHandle      */16, "getClass",        "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },      "(J)V" },
 /*30 VectorRemoveElementAt       */ { /*Vector           */ 0, "removeElementAt", "(I)V" },  /*06 FloatNewF                      */
 /*31 CIMValueCInst               */ { /*CIMValue         */19, "cInst",           "()J" },  { /*Float                 */
 /*32 CIMExceptionNewISt          */ { /*CIMException     */13, "<init>",          "(ILjava/lang/String;)V" },      6,
 /*33 CIMExceptionGetCode         */ { /*CIMException     */13, "getCode",         "()I" },      "<init>",
 /*34 CIMDateTimeNewJ             */ { /*CIMDateTime      */24, "<init>",          "(J)V" },      "(F)V" },
 /*35 SelectExpNewJ               */ { /*SelectExp        */25, "<init>",          "(J)V" },  /*07 DoubleNewD                     */
 /*36 CIMQualifierNewJ            */ { /*CIMQualifier     */26, "<init>",          "(J)V" },  { /*Double                */
 /*37 CIMFlavorNewI               */ { /*CIMFlavor        */28, "<init>",          "(I)V" },      7,
 /*38 CIMFlavorGetFlavor          */ { /*CIMFlavor        */28, "getFlavor",       "()I" },      "<init>",
 /*39 CIMArgumentCInst            */ { /*CIMArgument      */29, "cInst",           "()J" },      "(D)V" },
 /*40 CIMArgumentNewJ             */ { /*CIMArgument      */29, "<init>",          "(J)V" },  /*08 UnsignedInt8NewS               */
 /*41 CIMExceptionNew             */ { /*CIMException     */13, "<init>",          "()V" },  { /*UnsignedInt8          */
 /*42 CIMExceptionNewStOb         */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;)V" },      8,
 /*43 CIMExceptionNewStObOb       */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },      "<init>",
 /*44 CIMExceptionNewStObObOb     */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },      "(S)V" },
 /*45 CIMValueNewJ                */ { /*CIMValue         */19, "<init>",          "(J)V" },  /*09 UnsignedInt16NewI              */
 /*46 CIMObjectNewJZ              */ { /*CIMObject        */31, "<init>",          "(JZ)V" },  { /*UnsignedInt16         */
 /*47 CharacterNewC               */ { /*Character        */32, "<init>",          "(C)V" },      9,
 /*48 OperationContextNewJ        */ { /*OperationContext */33, "<init>",          "(J)V" },      "<init>",
 /*49 OperationContextUnassociate */ { /*OperationContext */33, "unassociate",     "()V" },      "(I)V" },
 /*50 ClassGetInterfaces          */ { /*Class            */34, "getInterfaces",   "()[Ljava/lang/Class;" },  /*10 UnsignedInt32NewJ              */
 /*51 ClassGetName                */ { /*Class            */34, "getName",         "()Ljava/lang/String;" },  { /*UnsignedInt32         */
 /*52 UnsignedInt64NewStr         */ { /*UnsignedInt64    */11, "<init>",          "(Ljava/lang/String;)V" }      10,
       "<init>",
       "(J)V" },
   /*11 UnsignedInt64NewBi             */
   { /*UnsignedInt64         */
       11,
       "<init>",
       "(Ljava/math/BigInteger;)V" },
   /*12 CIMObjectPathNewJ              */
   { /*CIMObjectPath         */
       12,
       "<init>",
       "(J)V" },
   /*13 CIMExceptionNewSt              */
   { /*CIMException          */
       13,
       "<init>",
       "(Ljava/lang/String;)V" },
   /*14 CIMPropertyNewJ                */
   { /*CIMProperty           */
       15,
       "<init>",
       "(J)V" },
   /*15 VectorAddElement               */
   { /*Vector                */
       0,
       "addElement",
       "(Ljava/lang/Object;)V" },
   /*16 VectorElementAt                */
   { /*Vector                */
       0,
       "elementAt",
       "(I)Ljava/lang/Object;" },
   /*17 CIMOMHandleNewJSt              */
   { /*CIMOMHandle           */
       16,
       "<init>",
       "(JLjava/lang/String;)V" },
   /*18 CIMExceptionNewI               */
   { /*CIMException          */
       13,
       "<init>",
       "(I)V" },
   /*19 CIMClassNewJ                   */
   { /*CIMClass              */
       17,
       "<init>",
       "(J)V" },
   /*20 CIMInstanceNewJ                */
   { /*CIMInstance           */
       18,
       "<init>",
       "(J)V" },
   /*21 CIMObjectPathCInst             */
   { /*CIMObjectPath         */
       12,
       "cInst",
       "()J" },
   /*22 CIMInstanceCInst               */
   { /*CIMInstance           */
       18,
       "cInst",
       "()J" },
   /*23 CIMClassCInst                  */
   { /*CIMClass              */
       17,
       "cInst",
       "()J" },
   /*24 ObjectToString                 */
   { /*Object                */
       20,
       "toString",
       "()Ljava/lang/String;" },
   /*25 ThrowableGetMessage            */
   { /*Throwable             */
       21,
       "getMessage",
       "()Ljava/lang/String;" },
   /*26 CIMExceptionGetID              */
   { /*CIMException          */
       13,
       "getID",
       "()Ljava/lang/String;" },
   /*27 VectorSize                     */
   { /*Vector                */
       0,
       "size",
       "()I" },
   /*28 CIMPropertyCInst               */
   { /*CIMProperty           */
       15,
       "cInst",
       "()J" },
   /*29 CIMOMHandleGetClass            */
   { /*CIMOMHandle           */
       16,
       "getClass",
       "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
   /*30 VectorRemoveElementAt          */
   { /*Vector                */
       0,
       "removeElementAt",
       "(I)V" },
   /*31 CIMValueCInst                  */
   { /*CIMValue              */
       19,
       "cInst",
       "()J" },
   /*32 CIMExceptionNewISt             */
   { /*CIMException          */
       13,
       "<init>",
       "(ILjava/lang/String;)V" },
   /*33 CIMExceptionGetCode            */
   { /*CIMException          */
       13,
       "getCode",
       "()I" },
   /*34 CIMDateTimeNewJ                */
   { /*CIMDateTime           */
       24,
       "<init>",
       "(J)V" },
   /*35 SelectExpNewJ                  */
   { /*SelectExp             */
       25,
       "<init>",
       "(J)V" },
   /*36 CIMQualifierNewJ               */
   { /*CIMQualifier          */
       26,
       "<init>",
       "(J)V" },
   /*37 CIMFlavorNewI                  */
   { /*CIMFlavor             */
       28,
       "<init>",
       "(I)V" },
   /*38 CIMFlavorGetFlavor             */
   { /*CIMFlavor             */
       28,
       "getFlavor",
       "()I" },
   /*39 CIMArgumentCInst               */
   { /*CIMArgument           */
       29,
       "cInst",
       "()J" },
   /*40 CIMArgumentNewJ                */
   { /*CIMArgument           */
       29,
       "<init>",
       "(J)V" },
   /*41 CIMExceptionNew                */
   { /*CIMException          */
       13,
       "<init>",
       "()V" },
   /*42 CIMExceptionNewStOb            */
   { /*CIMException          */
       13,
       "<init>",
       "(Ljava/lang/String;Ljava/lang/Object;)V" },
   /*43 CIMExceptionNewStObOb          */
   { /*CIMException          */
       13,
       "<init>",
       "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
   /*44 CIMExceptionNewStObObOb        */
   { /*CIMException          */
       13,
       "<init>",
       "(Ljava/lang/String;Ljava/lang/Object;"
           "Ljava/lang/Object;Ljava/lang/Object;)V" },
   /*45 CIMValueNewJ                   */
   { /*CIMValue              */
       19,
       "<init>",
       "(J)V" },
   /*46 CIMObjectNewJZ                 */
   { /*CIMObject             */
       31,
       "<init>",
       "(JZ)V" },
   /*47 CharacterNewC                  */
   { /*Character             */
       32,
       "<init>",
       "(C)V" },
   /*48 OperationContextNewJ           */
   { /*OperationContext      */
       33,
       "<init>",
       "(J)V" },
   /*49 OperationContextUnassociate    */
   { /*OperationContext      */
       33,
       "unassociate",
       "()V" },
   /*50 ClassGetInterfaces             */
   { /*Class                 */
       34,
       "getInterfaces",
       "()[Ljava/lang/Class;" },
   /*51 ClassGetName                   */
   { /*Class                 */
       34,
       "getName",
       "()Ljava/lang/String;" },
   /*52 UnsignedInt64NewStr            */
   { /*UnsignedInt64         */
       11,
       "<init>",
       "(Ljava/lang/String;)V" },
   /*53 ByteArrayOutputStreamNew       */
   { /*ByteArrayOutputStream */
       35,
       "<init>",
       "()V" },
   /*54 PrintStreamNewOb               */
   { /*PrintStreamNew        */
       36,
       "<init>",
       "(Ljava/io/OutputStream;)V" },
   /*55 ThrowablePrintStackTrace       */
   { /*Throwable             */
       21,
       "printStackTrace",
       "(Ljava/io/PrintStream;)V" },
   /*56 ByteArrayOutputStreamToString  */
   { /*ByteArrayOutputStream */
       35,
       "toString",
       "()Ljava/lang/String;" }
 }; };
  
 const METHOD_STRUCT staticMethodNames[]={ const METHOD_STRUCT staticMethodNames[]={
 /*00*/ { 14, "valueOf",         "(J)Ljava/math/BigInteger;" },  /*00*/ { 14,
 /*01*/ { 23, "load",            "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },           "valueOf",
            "(J)Ljava/math/BigInteger;" },
   /*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(classNames[0])]; jclass    classRefs[sizeof(classNames)/sizeof(classNames[0])];
 jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])];  jmethodID instanceMethodIDs[sizeof(instanceMethodNames) /
 jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(staticMethodNames[0])];                                  sizeof(instanceMethodNames[0])];
   jmethodID staticMethodIDs[sizeof(staticMethodNames) /
                                   sizeof(staticMethodNames[0])];
  
 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);
  
 #if 0 #if 0
   jmethodID   jmidToString   = env->GetMethodID(globalRefCls, "toString", "()Ljava/lang/String;");    jmethodID   jmidToString   = env->GetMethodID(globalRefCls,
   jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls, jmidToString);                                                  "toString",
                                                   "()Ljava/lang/String;");
     jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls,
                                                                 jmidToString);
   const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);   const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
  
   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(long)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<", pszResult = "<<pszResult<<PEGASUS_STD(endl));    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
         "globalRefCls = %p, name = %s, pszResult = %s",
         globalRefCls,name,pszResult));
  
   env->ReleaseStringUTFChars (jstringResult, pszResult);   env->ReleaseStringUTFChars (jstringResult, pszResult);
 #else #else
   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(long)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));  
     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
         "globalRefCls = %p, name = %s",globalRefCls,name));
   
 #endif #endif
  
   env->DeleteLocalRef(localRefCls);   env->DeleteLocalRef(localRefCls);
  
     PEG_METHOD_EXIT();
   return globalRefCls;   return globalRefCls;
 } }
  
Line 215 
Line 465 
  
 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(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));  
  
    methodInitDone = -1;    methodInitDone = -1;
  
    for (unsigned i = 0; i<(sizeof(classNames)/sizeof(classNames[0])); i++)    for (unsigned i = 0; i<(sizeof(classNames)/sizeof(classNames[0])); i++)
    {    {
 //////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)
       {       {
          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error: Count not find global class ref for "<<classNames[i]<<PEGASUS_STD(endl));           PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                "Error: Count not find global class ref for %s",classNames[i]));
  
            PEG_METHOD_EXIT();
          return JNI_FALSE;          return JNI_FALSE;
       }       }
    }    }
  
    for (unsigned j = 0; j<(sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])); j++)     unsigned instanceMethodNamesSize =
          sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0]);
   
      for (unsigned j = 0; j<instanceMethodNamesSize; j++)
    {    {
 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<": "<<instanceMethodNames[j].signature<<PEGASUS_STD(endl));         instanceMethodIDs[j] = env->GetMethodID(
       if ((instanceMethodIDs[j] = env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],                                    classRefs[instanceMethodNames[j].clsIndex],
                                                  instanceMethodNames[j].methodName,                                                  instanceMethodNames[j].methodName,
                                                  instanceMethodNames[j].signature)) == NULL)                                    instanceMethodNames[j].signature);
          if (instanceMethodIDs[j] == NULL)
       {       {
          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));             PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                  "Error: Could not get instance method id for %s:%s",
                  classNames[instanceMethodNames[j].clsIndex],
                  instanceMethodNames[j].methodName));
   
              PEG_METHOD_EXIT();
          return 0;          return 0;
       }       }
    }    }
      unsigned staticMethodNamesSize =
    for (unsigned k = 0; k<(sizeof(staticMethodNames)/sizeof(staticMethodNames[0])); k++)         sizeof(staticMethodNames) / sizeof(staticMethodNames[0]);
      for (unsigned k = 0; k<staticMethodNamesSize; k++)
    {    {
 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<": "<<staticMethodNames[k].signature<<PEGASUS_STD(endl));         staticMethodIDs[k] = env->GetStaticMethodID(
       if ((staticMethodIDs[k] = env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],                                  classRefs[staticMethodNames[k].clsIndex],
                                                      staticMethodNames[k].methodName,                                                      staticMethodNames[k].methodName,
                                                      staticMethodNames[k].signature)) == NULL)                                  staticMethodNames[k].signature);
   
          if (staticMethodIDs[k] == NULL)
       {       {
          DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));             PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                  "Error: Could not get static method id for %s:%s",
                  classNames[staticMethodNames[k].clsIndex],
                  staticMethodNames[k].methodName));
   
              PEG_METHOD_EXIT();
          return 0;          return 0;
       }       }
    }    }
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));  
   
    jv.env = env;    jv.env = env;
    jv.classRefs = classRefs;    jv.classRefs = classRefs;
    jv.instMethodIDs = instanceMethodIDs;    jv.instMethodIDs = instanceMethodIDs;
Line 269 
Line 542 
  
    methodInitDone = 1;    methodInitDone = 1;
  
      PEG_METHOD_EXIT();
    return JNI_TRUE;    return JNI_TRUE;
 } }
  
Line 281 
Line 555 
  
 int JMPIjvm::destroyJVM () int JMPIjvm::destroyJVM ()
 { {
    DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<<PEGASUS_STD(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 294 
Line 568 
  
       jvm = NULL;       jvm = NULL;
  
         PEG_METHOD_EXIT();
       return 0;       return 0;
    }    }
 #endif #endif
  
      PEG_METHOD_EXIT();
    return -1;    return -1;
 } }
  
Line 305 
Line 581 
  
 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 333 
Line 611 
    };    };
    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(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl));  
  
    jv.initRc = 0;    jv.initRc = 0;
  
Line 351 
Line 621 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl));        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1,
             "No CLASSPATH environment variable found.");
   
         PEG_METHOD_EXIT();
  
 #ifdef PEGASUS_PLATFORM_ZOS_ZSERIES_IBM  
       throw PEGASUS_CIM_EXCEPTION_L(  
                  CIM_ERR_FAILED,  
                  MessageLoaderParms(  
                      "ProviderManager2.JMPI.GET_CLASSPATH_FAILED.PEGASUS_OS_ZOS",  
                      "Could not get CLASSPATH from environment."  
                      " Either CLASSPATH is longer than 255 characters"  
                      " or not set at all.")  
                  );  
 #else  
       throw PEGASUS_CIM_EXCEPTION_L(       throw PEGASUS_CIM_EXCEPTION_L(
                  CIM_ERR_FAILED,                  CIM_ERR_FAILED,
                  MessageLoaderParms(                  MessageLoaderParms(
                      "ProviderManager2.JMPI.GET_CLASSPATH_FAILED.STANDARD",                "ProviderManager2.JMPI.JMPIImpl.GET_CLASSPATH_FAILED.STANDARD",
                      "Could not get CLASSPATH from environment.")                      "Could not get CLASSPATH from environment.")
                  );                  );
 #endif  
       return -1;       return -1;
    }    }
  
 ///JNIoptions.append ("-Djava.compiler=NONE"); ///JNIoptions.append ("-Djava.compiler=NONE");
 ///maxoption++; ///maxoption++;
  
    for (Uint32 i = 0; i < (int)(sizeof (aEnvOptions)/sizeof (aEnvOptions[0])); i++)     unsigned int aEnvOptionsSize=sizeof(aEnvOptions)/sizeof(aEnvOptions[0]);
      for (Uint32 i = 0; i < aEnvOptionsSize; i++)
    {    {
       JVMOPTIONS *pEnvOption = &aEnvOptions[i];       JVMOPTIONS *pEnvOption = &aEnvOptions[i];
  
Line 393 
Line 657 
             while (fCommaFound)             while (fCommaFound)
             {             {
                string            stringValue;                string            stringValue;
                string::size_type posComma    = stringValues.find (',', posStart);                 string::size_type posComma    = stringValues.find(',',
                                                                    posStart);
  
                if (posComma != string::npos)                if (posComma != string::npos)
                {                {
Line 407 
Line 672 
                   stringValue = stringValues.substr (posStart, posEnd - posStart + 1);                   stringValue = stringValues.substr (posStart, posEnd - posStart + 1);
                }                }
  
                DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): fCommaFound = " << fCommaFound << ", posStart = " << posStart << ", posComma = " << posComma << ", posEnd = " << posEnd << "" << PEGASUS_STD(endl));                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                      "fCommaFound = %d, posStart = %d, "
                          "posComma =  %d, posEnd = %d",
                      fCommaFound,posStart,posComma,posEnd));
  
                maxoption++;                maxoption++;
  
Line 416 
Line 684 
  
                JNIoptions.append (oss.str ());                JNIoptions.append (oss.str ());
  
                DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
                      "%s found! Specifying \"%s\"",
                      pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
             }             }
          }          }
          else          else
Line 428 
Line 698 
  
             JNIoptions.append (oss.str ());             JNIoptions.append (oss.str ());
  
             DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));              PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                   "%s found! Specifying \"%s\"",
                   pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
   
          }          }
       }       }
    }    }
Line 438 
Line 711 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
             "Could not allocate %d structures of size %d.",
             maxoption,sizeof (JavaVMOption)));
  
         PEG_METHOD_EXIT();
       return -1;       return -1;
    }    }
  
Line 447 
Line 723 
    {    {
       poptions[i].optionString = (char *)JNIoptions[i].c_str ();       poptions[i].optionString = (char *)JNIoptions[i].c_str ();
  
       DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
             "Setting option %d to \"%s\".",
             i ,poptions[i].optionString));
    }    }
  
    vm_args.version = JNI_VERSION_1_2;    vm_args.version = JNI_VERSION_1_2;
Line 466 
Line 744 
    {    {
       jv.initRc = 1;       jv.initRc = 1;
  
       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));        PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
             "Can not create Java VM !");
  
         PEG_METHOD_EXIT();
       return -1;       return -1;
    }    }
  
Line 490 
Line 770 
       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 530 
Line 812 
                               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(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jarName = "<<jarName<<", className = "<<className<<", pszProviderName = "<<pszProviderName<<", pjClass = "<<PEGASUS_STD(hex)<<(long)pjClass<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
          "jarName = %s, className = %s, pszProviderName = %s, pjClass = %p",
          (const char*)jarName.getCString(),
          (const char*)className.getCString(),
          pszProviderName,pjClass));
  
    // CASE #1    // CASE #1
    //    className has been loaded previously.    //    className has been loaded previously.
Line 543 
Line 831 
    _objectTable.lookup (className, jProviderInstance);    _objectTable.lookup (className, jProviderInstance);
    _classTable.lookup (className, jClassLoaded);    _classTable.lookup (className, jClassLoaded);
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jProviderInstance = "<<PEGASUS_STD(hex)<<(long)jProviderInstance<<", jClassLoaded = "<<(long)jClassLoaded<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
          "jProviderInstance = %p, jClassLoaded = %p",
          jProviderInstance,jClassLoaded));
  
    if (  jProviderInstance    if (  jProviderInstance
       && jClassLoaded       && jClassLoaded
Line 553 
Line 843 
       {       {
          *pjClass = jClassLoaded;          *pjClass = jClassLoaded;
       }       }
         PEG_METHOD_EXIT();
       return jProviderInstance;       return jProviderInstance;
    }    }
  
Line 561 
Line 851 
    //    className can be loaded via getGlobalClassRef ().    //    className can be loaded via getGlobalClassRef ().
    //    Load and return the instance.    //    Load and return the instance.
    // NOTE:    // NOTE:
    //    According to http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html     //    According to
      //        http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html
    //    In JDK 1.1, FindClass searched only local classes in CLASSPATH.    //    In JDK 1.1, FindClass searched only local classes in CLASSPATH.
  
    jClassLoaded = getGlobalClassRef (env,    jClassLoaded = getGlobalClassRef (env,
                                      (const char*)className.getCString ());                                      (const char*)className.getCString ());
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jClassLoaded = "<<PEGASUS_STD(hex)<<(long)jClassLoaded<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
          "jClassLoaded = %p",jClassLoaded));
  
    if (env->ExceptionCheck ())    if (env->ExceptionCheck ())
    {    {
Line 582 
Line 874 
  
       // NOTE: Instances of "packageName/className" will not work with the jar       // NOTE: Instances of "packageName/className" will not work with the jar
       //       class loader.  Change the '/' to a '.'.       //       class loader.  Change the '/' to a '.'.
       String fixedClassName;        String fixedClassName(className);
       Uint32 idx            = className.find ('/');        static Char16 slash=Char16('/');
  
       if (idx != PEG_NOT_FOUND)        for (Uint32 i=0; i<className.size(); i++)
       {       {
          fixedClassName = className.subString (0, idx)            if (fixedClassName[i]==slash)
                         + "."  
                         + className.subString (idx + 1);  
       }  
       else  
       {       {
          fixedClassName = className;                fixedClassName[i]=Char16('.');
       }       }
         };
  
       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: fixedClassName = "<<fixedClassName<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "fixedClassName = %s",(const char*)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(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jJarName = "<<PEGASUS_STD(hex)<<(long)jJarName<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jClassName = "<<PEGASUS_STD(hex)<<(long)jClassName<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));            "jJarName = %p, jClassName = %p",
             jJarName,jClassName));
  
       jClassLoadedLocal = (jclass)env->CallStaticObjectMethod (JMPIjvm::jv.JarClassLoaderClassRef,        jClassLoadedLocal = (jclass)env->CallStaticObjectMethod(
                                 JMPIjvm::jv.JarClassLoaderClassRef,
                                                                JMPIjvm::jv.JarClassLoaderLoad,                                                                JMPIjvm::jv.JarClassLoaderLoad,
                                                                jJarName,                                                                jJarName,
                                                                jClassName);                                                                jClassName);
  
       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jClassLoadedLocal = "<<PEGASUS_STD(hex)<<(long)jClassLoadedLocal<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "jClassLoadedLocal = %p",jClassLoadedLocal));
  
       if (env->ExceptionCheck ())       if (env->ExceptionCheck ())
       {       {
          DDD (env->ExceptionDescribe ());           env->ExceptionDescribe();
  
          DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<pszProviderName<<PEGASUS_STD(endl));           PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
                 "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(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jClassLoaded = "<<PEGASUS_STD(hex)<<(long)jClassLoaded<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "jClassLoaded = %p",jClassLoaded));
  
       env->DeleteLocalRef (jClassLoadedLocal);       env->DeleteLocalRef (jClassLoadedLocal);
    }    }
Line 634 
Line 934 
  
    if (!jClassLoaded)    if (!jClassLoaded)
    {    {
       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<pszProviderName<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
              "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(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jId = "<<PEGASUS_STD(hex)<<(long)jId<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "GetMethodID() jID = %p ",jId));
  
    jProviderInstanceLocal = env->NewObject (jClassLoaded,    jProviderInstanceLocal = env->NewObject (jClassLoaded,
                                             jId);                                             jId);
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jProviderInstanceLocal = "<<PEGASUS_STD(hex)<<(long)jProviderInstanceLocal<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "NewObject() jProviderInstanceLocal = %p ",
           jProviderInstanceLocal));
  
    if (!jProviderInstanceLocal)    if (!jProviderInstanceLocal)
    {    {
       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<pszProviderName<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
              "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(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jProviderInstance = "<<PEGASUS_STD(hex)<<(long)jProviderInstance<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "NewGlobalRef() jProviderInstance = %p ",jProviderInstance));
  
    if (!jProviderInstance)    if (!jProviderInstance)
    {    {
       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<pszProviderName<<PEGASUS_STD(endl));         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
               "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 680 
Line 989 
    jobject gProv = NULL;    jobject gProv = NULL;
    jclass scls = NULL;    jclass scls = NULL;
  
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getProvider");
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "cn = %s, cls = %p",cn,cls));
  
    _objectTable.lookup(cln,gProv);    _objectTable.lookup(cln,gProv);
    _classTable.lookup(cln,scls);    _classTable.lookup(cln,scls);
    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(long)gProv<<", scls = "<<(long)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));  
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "gProv = %p, scls = %p",gProv,scls));
  
    if (gProv)    if (gProv)
    {    {
Line 695 
Line 1009 
    scls = getGlobalClassRef(env,cn);    scls = getGlobalClassRef(env,cn);
    if (env->ExceptionCheck())    if (env->ExceptionCheck())
    {    {
       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
       DDD(env->ExceptionDescribe());             "Provider %s not found: No global reference.",cn));
         PEG_METHOD_EXIT();
       return NULL;       return NULL;
    }    }
    *cls = scls;    *cls = scls;
  
    if (scls)    if (scls)
    {    {
       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(long)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Inserting global reference %p into class table.",scls));
       _classTable.insert(cln,scls);       _classTable.insert(cln,scls);
    }    }
  
Line 713 
Line 1028 
    gProv = (jobject)env->NewGlobalRef(lProv);    gProv = (jobject)env->NewGlobalRef(lProv);
    if (env->ExceptionCheck())    if (env->ExceptionCheck())
    {    {
       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
              "Unable to instantiate provider %s.",cn));
         PEG_METHOD_EXIT();
       return NULL;       return NULL;
    }    }
  
    if (gProv)    if (gProv)
    {    {
       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(long)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
              "Inserting provider reference %p into object table.",gProv));
       _objectTable.insert(cln,gProv);       _objectTable.insert(cln,gProv);
    }    }
  
      PEG_METHOD_EXIT();
    return gProv;    return gProv;
 } }
  
   #if 0
   
   // Java 1.4 version of programmatically accessting the backtrace stack
   // NOTE: Renumber to follow current content
   // add to:
   // const char* classNames[]={
   ///*37*/ "java/lang/StackTraceElement"
   // add to:
   // const METHOD_STRUCT instanceMethodNames[]={
   ///*57 ThrowableGetStackTrace         */ { /*Throwable        */
   ///21, "getStackTrace",   "()Ljava/lang/StackTraceElement;" },
   ///*58 StackTraceElementGetClassName  */ { /*StackTraceElement*/
   ///37, "getClassName",    "()Ljava/lang/String;" },
   ///*59 StackTraceElementGetFileName   */ { /*StackTraceElement*/
   ///37, "getFileName",     "()Ljava/lang/String;" },
   ///*60 StackTraceElementGetLineNumber */ { /*StackTraceElement*/
   ///37, "getLineNumber",   "()I" },
   ///*61 StackTraceElementGetMethodName */ { /*StackTraceElement*/
   ///37, "getMethodName",   "()Ljava/lang/String;" }
   
   String getExceptionInfo (JNIEnv *env)
   {
      jthrowable   err        = env->ExceptionOccurred ();
      jobjectArray stackTrace = 0;
      String       rc;
   
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "err =  %ld ",(long)(jlong)err));
   
      if (!err)
      {
          PEG_METHOD_EXIT();
         return rc;
      }
   
   
      stackTrace = (jobjectArray)env->CallObjectMethod(
                       err,
                       JMPIjvm::jv.ThrowableGetStackTrace);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "stackTrace =  %p ",stackTrace));
   
      if (!stackTrace)
      {
          PEG_METHOD_EXIT();
         return rc;
      }
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "stackTrace length =  %d",(jlong)env->GetArrayLength(stackTrace)));
   
      jobject jFirstST = 0;
      jstring jClass   = 0;
      jstring jFile    = 0;
      jstring jMethod  = 0;
      jint    jLine    = 0;
   
      jFirstST = env->GetObjectArrayElement (stackTrace, 0);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "jFirstST = %p",jFirstST));
   
      if (!jFirstST)
      {
          PEG_METHOD_EXIT();
         return rc;
      }
   
      jClass  = (jstring)env->CallObjectMethod(
                    jFirstST,
                    JMPIjvm::jv.StackTraceElementGetClassName);
      jFile   = (jstring)env->CallObjectMethod(
                    jFirstST,
                    JMPIjvm::jv.StackTraceElementGetFileName);
      jMethod = (jstring)env->CallObjectMethod(
                    jFirstST,
                    JMPIjvm::jv.StackTraceElementGetMethodName);
      jLine   = env->CallIntMethod(
                    jFirstST,
                    JMPIjvm::jv.StackTraceElementGetLineNumber);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
          "jClass = %p, jFile = %p, jMethod = %p, jLine = %p",
          jClass,jFile,jMethod,jLine));
   
      const char *pszClass  = 0;
      const char *pszFile   = 0;
      const char *pszMethod = 0;
   
      pszClass  = env->GetStringUTFChars (jClass, NULL);
      pszFile   = env->GetStringUTFChars (jFile, NULL);
      pszMethod = env->GetStringUTFChars (jMethod, NULL);
   
      std::ostringstream oss;
      String             exceptionInfo;
   
      if (pszFile)
      {
         oss << "File: " << pszFile;
   
         env->ReleaseStringUTFChars (jFile, pszFile);
      }
      if (jLine)
      {
         oss << ", Line: " << jLine;
      }
      if (pszClass)
      {
         oss << ", Class: " << pszClass;
   
         env->ReleaseStringUTFChars (jClass, pszClass);
      }
      if (pszMethod)
      {
         oss << ", Method: " << pszMethod;
   
         env->ReleaseStringUTFChars (jMethod, pszMethod);
      }
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "oss = %s",(const char*)oss.str().c_str()));
   
      rc = oss.str ().c_str ();
   
      return rc;
   }
   
   #else
   
   String getExceptionInfo (JNIEnv *env)
   {
      jthrowable err = env->ExceptionOccurred ();
      String     rc;
   
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
           "err =  %ld ",(long)(jlong)err));
   
      if (!err)
      {
          PEG_METHOD_EXIT();
         return rc;
      }
   
   
      // ByteArrayOutputStream baos = new ByteArrayOutputStream ();
      // PrintStream           ps   = new PrintStream (baos);
      // e.printStackTrace (ps);
      // result = baos.toString ();
   
      jobject jBAOS = 0;
      jobject jPS   = 0;
   
      jBAOS = env->NewObject (JMPIjvm::jv.ByteArrayOutputStreamClassRef,
                              JMPIjvm::jv.ByteArrayOutputStreamNew);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, "jBAOS = %p ",jBAOS));
   
      if (!jBAOS)
      {
         env->ExceptionDescribe ();
   
         PEG_METHOD_EXIT();
         return rc;
      }
   
      jPS = env->NewObject (JMPIjvm::jv.PrintStreamClassRef,
                            JMPIjvm::jv.PrintStreamNewOb,
                            jBAOS);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, "jPS = %p ",jPS));
   
      if (!jPS)
      {
          PEG_METHOD_EXIT();
         return rc;
      }
   
      env->CallVoidMethod (err,
                           JMPIjvm::jv.ThrowablePrintStackTrace,
                           jPS);
   
      jstring jST = 0;
   
      jST = (jstring)env->CallObjectMethod(
                jBAOS,
                JMPIjvm::jv.ByteArrayOutputStreamToString);
   
      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,"jST = %p ",jST));
   
      const char *pszST = 0;
   
      pszST = env->GetStringUTFChars (jST, NULL);
   
      if (pszST)
      {
         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
              "pszST = %s ",pszST));
   
         rc = pszST;
   
         env->ReleaseStringUTFChars (jST, pszST);
      }
   
      PEG_METHOD_EXIT();
      return rc;
   }
   
   #endif
   
 void JMPIjvm::checkException (JNIEnv *env) void JMPIjvm::checkException (JNIEnv *env)
 { {
    if (env->ExceptionCheck ())     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::checkException");
   
      if (!env->ExceptionCheck ())
    {    {
          PEG_METHOD_EXIT();
         return;
      }
   
       jstring     jMsg = NULL,       jstring     jMsg = NULL,
                   jId  = NULL;                   jId  = NULL;
       int         code;       int         code;
       const char *cp;       const char *cp;
       String      msg  = String::EMPTY,     String      msg;
                   id   = String::EMPTY;     String      id;
       jthrowable  err  = env->ExceptionOccurred();       jthrowable  err  = env->ExceptionOccurred();
  
       DDD(env->ExceptionDescribe());  //   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
   //        "err =  %ld ",(long)(jlong)err));
   
      if (!err)
      {
          PEG_METHOD_EXIT();
         return;
      }
   
      PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1,
           "Provider caused an exception!");
   
      env->ExceptionDescribe ();
  
       if (env->IsInstanceOf (err, JMPIjvm::jv.CIMExceptionClassRef))       if (env->IsInstanceOf (err, JMPIjvm::jv.CIMExceptionClassRef))
       {       {
          env->ExceptionClear ();          env->ExceptionClear ();
          if (err)  
          {        jMsg = (jstring)env->CallObjectMethod(
             jMsg = (jstring)env->CallObjectMethod (err, JMPIjvm::jv.ThrowableGetMessage);                   err,
             code = (int)env->CallIntMethod (err, JMPIjvm::jv.CIMExceptionGetCode);                   JMPIjvm::jv.ThrowableGetMessage);
             jId  = (jstring)env->CallObjectMethod (err, JMPIjvm::jv.CIMExceptionGetID);        code = (int)env->CallIntMethod(
                    err,
                    JMPIjvm::jv.CIMExceptionGetCode);
         jId  = (jstring)env->CallObjectMethod(
                    err,
                    JMPIjvm::jv.CIMExceptionGetID);
  
             if (jId)             if (jId)
             {             {
Line 763 
Line 1319 
                env->ReleaseStringUTFChars (jMsg, cp);                env->ReleaseStringUTFChars (jMsg, cp);
             }             }
  
             DDD(PEGASUS_STD(cerr)<<"--- throwing Pegasus exception: "<<code<<" "<<id<<" ("<<msg<<")"<<PEGASUS_STD(endl));        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
              "throwing Pegasus exception: %d %s (%s)",
              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
       {       {
          DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::checkException: exiting..."<<PEGASUS_STD(endl));        String info = getExceptionInfo (env);
          env->ExceptionDescribe();  
          exit(13);        env->ExceptionClear ();
       }  
         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
              "Java caused an exception: %s",(const char*)info.getCString()));
   
         PEG_METHOD_EXIT();
   
         throw PEGASUS_CIM_EXCEPTION_L(
             CIM_ERR_FAILED,
             MessageLoaderParms(
                 "ProviderManager2.JMPI.JMPIImpl.JAVA_CAUSED_EXCEPTION.STANDARD",
                 "Java caused an exception: $0",
                 info));
    }    }
 } }
  
Line 873 
Line 1442 
 void throwCimException (JNIEnv *jEnv, CIMException &e) void throwCimException (JNIEnv *jEnv, CIMException &e)
 { {
       JMPIjvm::cacheIDs(jEnv);       JMPIjvm::cacheIDs(jEnv);
       jobject ev = jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,(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(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,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(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,7);        jobject ev = jEnv->NewObject(
             JMPIjvm::jv.CIMExceptionClassRef,
             JMPIjvm::jv.CIMExceptionNewI,
             7);
       jEnv->Throw((jthrowable)ev);       jEnv->Throw((jthrowable)ev);
 } }
  
Line 1033 
Line 1611 
  
          copNew.setNameSpace (cls->getPath ().getNameSpace ());          copNew.setNameSpace (cls->getPath ().getNameSpace ());
          ci->setPath (copNew);          ci->setPath (copNew);
   
          for (int i = 0, m = cls->getQualifierCount (); i < m; i++)          for (int i = 0, m = cls->getQualifierCount (); i < m; i++)
          {          {
             try             try
Line 1061 
Line 1638 
                }                }
             }             }
          }          }
   
          return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);          return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);
       }       }
       Catch (jEnv);       Catch (jEnv);
Line 1071 
Line 1647 
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
       (JNIEnv *jEnv, jobject jThs, jlong jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)        (JNIEnv *jEnv,
          jobject jThs,
          jlong jInst,
          jobjectArray jPl,
          jboolean iq,
          jboolean ic,
          jboolean lo)
 { {
    CIMClass *cc   = DEBUG_ConvertJavaToC (jlong, CIMClass*, jInst);    CIMClass *cc   = DEBUG_ConvertJavaToC (jlong, CIMClass*, jInst);
    CIMClass *cf   = 0;    CIMClass *cf   = 0;
Line 1227 
Line 1809 
    {    {
       CIMQualifier *cq   = new CIMQualifier (cls->getQualifier (i));       CIMQualifier *cq   = new CIMQualifier (cls->getQualifier (i));
       jlong         jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jlong, cq);       jlong         jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jlong, cq);
       jobject       qual = jEnv->NewObject (JMPIjvm::jv.CIMQualifierClassRef,JMPIjvm::jv.CIMQualifierNewJ,jCq);        jobject       qual = jEnv->NewObject(
                                  JMPIjvm::jv.CIMQualifierClassRef,
                                  JMPIjvm::jv.CIMQualifierNewJ,
                                  jCq);
  
       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,qual);       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,qual);
    }    }
Line 1271 
Line 1856 
    {    {
       cls->removeProperty (i);       cls->removeProperty (i);
    }    }
    for (Uint32 i = 0, s = jEnv->CallIntMethod (jVec, JMPIjvm::jv.VectorSize); i < s; i++)     for (Uint32 i = 0, s = jEnv->CallIntMethod(
                                 jVec,
                                 JMPIjvm::jv.VectorSize); i < s; i++)
    {    {
       JMPIjvm::checkException (jEnv);       JMPIjvm::checkException (jEnv);
  
Line 1314 
Line 1901 
    {    {
       CIMProperty *cp   = new CIMProperty (cls->getProperty (i));       CIMProperty *cp   = new CIMProperty (cls->getProperty (i));
       jlong        jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);       jlong        jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
       jobject      prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jCp);        jobject      prop = jEnv->NewObject(
                                 JMPIjvm::jv.CIMPropertyClassRef,
                                 JMPIjvm::jv.CIMPropertyNewJ,
                                 jCp);
  
       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
Line 1366 
Line 1956 
             CIMProperty *cp  = new CIMProperty (cls->getProperty (pos));             CIMProperty *cp  = new CIMProperty (cls->getProperty (pos));
             jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);             jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
  
             jobject prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jCp);              jobject prop = jEnv->NewObject(
                                  JMPIjvm::jv.CIMPropertyClassRef,
                                  JMPIjvm::jv.CIMPropertyNewJ,
                                  jCp);
  
             jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);             jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
          }          }
Line 1386 
Line 1979 
  
    if (pos != PEG_NOT_FOUND)    if (pos != PEG_NOT_FOUND)
    {    {
       rv = DEBUG_ConvertCToJava (CIMMethod*, jlong, new CIMMethod (cls->getMethod (pos)));        rv = DEBUG_ConvertCToJava(
                  CIMMethod*,
                  jlong,
                  new CIMMethod(cls->getMethod(pos)));
    }    }
  
    jEnv->ReleaseStringUTFChars (jN,str);    jEnv->ReleaseStringUTFChars (jN,str);
Line 1398 
Line 1994 
       (JNIEnv *jEnv, jobject jThs, jlong jCls, jlong jClsToBeCompared)       (JNIEnv *jEnv, jobject jThs, jlong jCls, jlong jClsToBeCompared)
 { {
    CIMClass *cls             = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);    CIMClass *cls             = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
    CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC (jlong, CIMClass*, jClsToBeCompared);     CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC(
                                      jlong,
                                      CIMClass*,
                                      jClsToBeCompared);
    bool      fRc             = false;    bool      fRc             = false;
  
    if (  cls     if (  cls && clsToBeCompared )
       && clsToBeCompared  
       )  
    {    {
       try       try
       {       {
Line 1415 
Line 2012 
    return fRc;    return fRc;
 } }
  
   JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1isAssociation
         (JNIEnv *jEnv, jobject jThs, jlong jCls)
   {
      CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
      jboolean  rv  = false;
   
      if (cls)
      {
         try
         {
            rv = cls->isAssociation ();
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1findMethod
         (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jName)
   {
      CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
      jint      rv  = -1;
   
      if (cls)
      {
         const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
   
         try
         {
            CIMName name (cstrName);
   
            rv = cls->findMethod (name);
         }
         Catch (jEnv);
   
         jEnv->ReleaseStringUTFChars (jName, cstrName);
      }
   
      return rv;
   }
   
   JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethodI
         (JNIEnv *jEnv, jobject jThs, jlong jCls, jint jMethod)
   {
      CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
      jlong     rv  = 0;
   
      if (cls && jMethod >=0)
      {
         try
         {
            CIMMethod cm = cls->getMethod (jMethod);
   
            rv = DEBUG_ConvertCToJava (CIMMethod *, jlong, new CIMMethod (cm));
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethodCount
         (JNIEnv *jEnv, jobject jThs, jlong jCls)
   {
      CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
      jint      rv  = 0;
   
      if (cls)
      {
         try
         {
            rv = cls->getMethodCount ();
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
      (JNIEnv *jEnv, jobject jThs, jlong jCls)      (JNIEnv *jEnv, jobject jThs, jlong jCls)
 { {
Line 1466 
Line 2143 
    return 0;    return 0;
 } }
  
   Boolean verifyServerCertificate (SSLCertificateInfo &certInfo)
   {
      //
      // If server certificate was found in CA trust store and validated, then
      // return 'true' to accept the certificate, otherwise return 'false'.
      //
      if (certInfo.getResponseCode () == 1)
      {
          return true;
      }
      else
      {
          return false;
      }
   }
   
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
   (JNIEnv *jEnv, jobject jThs, jlong jNs, jstring jUn, jstring jPw)   (JNIEnv *jEnv, jobject jThs, jlong jNs, jstring jUn, jstring jPw)
 { {
Line 1474 
Line 2167 
    const char *pw  = jEnv->GetStringUTFChars (jPw, NULL);    const char *pw  = jEnv->GetStringUTFChars (jPw, NULL);
    jlong       jCc = 0;    jlong       jCc = 0;
  
      SSLContext *sslContext = 0; // initialized for unencrypted connection
   
   #ifdef PEGASUS_HAS_SSL
      if (cNs->isHttps ())
      {
         try
         {
            sslContext = new SSLContext (PEGASUS_SSLCLIENT_CERTIFICATEFILE,
                                         verifyServerCertificate,
                                         PEGASUS_SSLCLIENT_RANDOMFILE);
         }
         catch (Exception &e)
         {
           cerr << "JMPI: Error: could not create SSLContext: "
                << e.getMessage() << endl;
           return jCc;
         }
      }
   #endif
   
    try {    try {
       CIMClient *cc = new CIMClient ();       CIMClient *cc = new CIMClient ();
  
         if (sslContext)
         {
            cc->connect (cNs->hostName (), cNs->port (), *sslContext, un, pw);
         }
         else
         {
       cc->connect (cNs->hostName (), cNs->port (), un, pw);       cc->connect (cNs->hostName (), cNs->port (), un, pw);
         }
  
       jCc = DEBUG_ConvertCToJava (CIMClient*, jlong, cc);       jCc = DEBUG_ConvertCToJava (CIMClient*, jlong, cc);
    }    }
Line 1486 
Line 2206 
    jEnv->ReleaseStringUTFChars (jUn, un);    jEnv->ReleaseStringUTFChars (jUn, un);
    jEnv->ReleaseStringUTFChars (jPw, pw);    jEnv->ReleaseStringUTFChars (jPw, pw);
  
      delete sslContext;
   
    return jCc;    return jCc;
 } }
  
Line 1658 
Line 2380 
    Catch (jEnv);    Catch (jEnv);
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jboolean deep,
       jboolean lo,
       jboolean iq,
       jboolean ic)
 { {
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 1674 
Line 2404 
                                                    (Boolean)iq,                                                    (Boolean)iq,
                                                    (Boolean)ic);                                                    (Boolean)ic);
  
       return DEBUG_ConvertCToJava (Array<CIMClass>*, jlong, new Array<CIMClass> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMClass>*,
                    jlong,
                    new Array<CIMClass> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 1717 
Line 2450 
    try {    try {
       checkNs (cop,jNs);       checkNs (cop,jNs);
  
       Array<CIMObjectPath> enm = cCc->enumerateInstanceNames (cop->getNameSpace (),        Array<CIMObjectPath> enm = cCc->enumerateInstanceNames(
                                        cop->getNameSpace(),
                                                               cop->getClassName ()); //, (Boolean)deep);                                                               cop->getClassName ()); //, (Boolean)deep);
  
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMObjectPath>*,
                    jlong,
                    new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep, jboolean lo,      JNIEnv *jEnv,
          jboolean iq, jboolean ic, jobjectArray jPl)      jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jboolean deep,
       jboolean lo,
       jboolean iq,
       jboolean ic,
       jobjectArray jPl)
 { {
    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 1746 
Line 2491 
                                                         (Boolean)iq,                                                         (Boolean)iq,
                                                         (Boolean)ic,pl);                                                         (Boolean)ic,pl);
  
       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, new Array<CIMInstance> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMInstance>*,
                    jlong,
                    new Array<CIMInstance> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 1764 
Line 2512 
  
       Array<CIMQualifierDecl> enm = cCc->enumerateQualifiers (cop->getNameSpace ());       Array<CIMQualifierDecl> enm = cCc->enumerateQualifiers (cop->getNameSpace ());
  
       return DEBUG_ConvertCToJava (Array<CIMQualifierDecl>*, jlong, new Array<CIMQualifierDecl> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMQualifierDecl>*,
                    jlong,
                    new Array<CIMQualifierDecl> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 1780 
Line 2531 
    try {    try {
       checkNs (cop,jNs);       checkNs (cop,jNs);
  
       CIMQualifierDecl *val = new CIMQualifierDecl (cCc->getQualifier (cop->getNameSpace (),        CIMQualifierDecl *val = new CIMQualifierDecl(
                                         cCc->getQualifier(
                                             cop->getNameSpace (),
                                                                        cop->getClassName ()));                                                                        cop->getClassName ()));
  
       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, val);       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, val);
Line 1831 
Line 2584 
    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));
  
       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);
    }    }
Line 1842 
Line 2598 
    return jCv;    return jCv;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jPn, jlong jV)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jstring jPn,
       jlong jV)
 { {
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 1861 
Line 2623 
    jEnv->ReleaseStringUTFChars (jPn, str);    jEnv->ReleaseStringUTFChars (jPn, str);
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jQuery, jstring jQl)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jstring jQuery,
       jstring jQl)
 { {
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
    const char    *str = jEnv->GetStringUTFChars (jQuery, NULL);    const char    *str = jEnv->GetStringUTFChars (jQuery, NULL);
    String         query (str);    String         query (str);
  
 /* @NOTE  
 ** 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)<< (long)jEnv<<", jThs = "<< (long)jThs<<PEGASUS_STD (dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD (hex)<< (long)jQuery<<", jQl = "<< (long)jQl<<PEGASUS_STD (dec)<<PEGASUS_STD (endl));  
 ** What does work is:  
 **   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);
Line 1921 
Line 2665 
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jMn, jobject jIn, jobject jOut)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jstring jMn,
       jobject jIn,
       jobject jOut)
 { {
    JMPIjvm::cacheIDs (jEnv);    JMPIjvm::cacheIDs (jEnv);
  
Line 1953 
Line 2704 
    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++)
       {       {
          const CIMParamValue &parm = out[i];          const CIMParamValue &parm = out[i];
          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());
          jlong                jp   = DEBUG_ConvertCToJava (CIMProperty*, jlong, p);          jlong                jp   = DEBUG_ConvertCToJava (CIMProperty*, jlong, p);
          jobject              prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jp);           jobject prop = jEnv->NewObject(
                               JMPIjvm::jv.CIMPropertyClassRef,
                               JMPIjvm::jv.CIMPropertyNewJ,
                               jp);
  
          jEnv->CallVoidMethod (jOut,JMPIjvm::jv.VectorAddElement,prop);          jEnv->CallVoidMethod (jOut,JMPIjvm::jv.VectorAddElement,prop);
       }       }
Line 2023 
Line 2786 
             CIMParamValue *parm  = new CIMParamValue (out[i]);             CIMParamValue *parm  = new CIMParamValue (out[i]);
             jlong          jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);             jlong          jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);
  
             jEnv->SetObjectArrayElement (jOut,              jEnv->SetObjectArrayElement(
                   jOut,
                                         i,                                         i,
                                         jEnv->NewObject (JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewJ,jParm));                  jEnv->NewObject(
                       JMPIjvm::jv.CIMArgumentClassRef,
                       JMPIjvm::jv.CIMArgumentNewJ,
                       jParm));
          }          }
       }       }
       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);
Line 2037 
Line 2804 
    return jCv;    return jCv;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop,      JNIEnv *jEnv,
    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)      jobject jThs,
       jlong jCc,
       jlong jNs,
       jlong jCop,
       jstring jAssocClass,
       jstring jResultClass,
       jstring jRole,
       jstring jResultRole)
 { {
    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 2057 
Line 2831 
       }       }
       else       else
       {       {
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,           jobject ev = jEnv->NewObject(
                                   JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                  jEnv->NewStringUTF(
                                       "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2087 
Line 2863 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid result class name"));                                         jEnv->NewStringUTF(
                                              "Invalid result class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2118 
Line 2895 
                                                       resultClass,                                                       resultClass,
                                                       role,                                                       role,
                                                       resultRole);                                                       resultRole);
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
             Array<CIMObjectPath>*,
             jlong,
             new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associators  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associators(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop,      JNIEnv *jEnv,
    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,      jobject jThs,
    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)      jlong jCc,
       jlong jNs,
       jlong jCop,
       jstring jAssocClass,
       jstring jResultClass,
       jstring jRole,
       jstring jResultRole,
       jboolean includeQualifiers,
       jboolean includeClassOrigin,
       jobjectArray jPl)
 { {
    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
    CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 2150 
Line 2939 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2177 
Line 2967 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid result class name"));                                         jEnv->NewStringUTF(
                                              "Invalid result class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2248 
Line 3039 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2272 
Line 3064 
                                                       assocClass,                                                       assocClass,
                                                       role);                                                       role);
  
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
             Array<CIMObjectPath>*,
             jlong,
             new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 2304 
Line 3099 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 2358 
Line 3154 
    normalizeNs (ns, nsBase, lastNsComp);    normalizeNs (ns, nsBase, lastNsComp);
  
    CIMInstance newInstance (CIMName ("__Namespace"));    CIMInstance newInstance (CIMName ("__Namespace"));
    newInstance.addProperty (CIMProperty (CIMName ("name"), lastNsComp));     newInstance.addProperty(CIMProperty(PEGASUS_PROPERTYNAME_NAME, lastNsComp));
  
    try {    try {
       cCc->createInstance (CIMNamespaceName (nsBase), newInstance);       cCc->createInstance (CIMNamespaceName (nsBase), newInstance);
Line 2366 
Line 3162 
    Catch (jEnv);    Catch (jEnv);
 } }
  
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces  JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces(
   (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jCop, jboolean deep, jobject jVec)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCc,
       jlong jCop,
       jboolean deep,
       jobject jVec)
 { {
    JMPIjvm::cacheIDs (jEnv);    JMPIjvm::cacheIDs (jEnv);
  
Line 2376 
Line 3177 
    String         ns  = cop->getNameSpace ().getString ();    String         ns  = cop->getNameSpace ().getString ();
  
    try {    try {
       Array<CIMObjectPath> enm = cCc->enumerateInstanceNames (cop->getNameSpace (),        Array<CIMObjectPath> enm = cCc->enumerateInstanceNames(
                                             cop->getNameSpace(),
                                                               CIMName ("__Namespace"));                                                               CIMName ("__Namespace"));
  
       for (int i = 0, s = enm.size (); i < s; i++)       for (int i = 0, s = enm.size (); i < s; i++)
Line 2418 
Line 3220 
                              CIMName ("__Namespace"));                              CIMName ("__Namespace"));
    Array<CIMKeyBinding> kb;    Array<CIMKeyBinding> kb;
  
    kb.append (CIMKeyBinding (("Name"),CIMValue (lastNsComp)));     kb.append (CIMKeyBinding (PEGASUS_PROPERTYNAME_NAME,CIMValue (lastNsComp)));
    cop.setKeyBindings (kb);    cop.setKeyBindings (kb);
  
    try {    try {
Line 2460 
Line 3262 
   (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)   (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)
 { {
    const char *ref   = jEnv->GetStringUTFChars (jRef,NULL);    const char *ref   = jEnv->GetStringUTFChars (jRef,NULL);
    jlong       cInst = DEBUG_ConvertCToJava (_dataType*, jlong, new _dataType (type,String (ref)));     jlong cInst = DEBUG_ConvertCToJava(
                        _dataType*,
                        jlong,
                        new _dataType(type,String (ref)));
  
    jEnv->ReleaseStringUTFChars (jRef,ref);    jEnv->ReleaseStringUTFChars (jRef,ref);
  
Line 2601 
Line 3406 
 { {
    CIMDateTime *ct = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);    CIMDateTime *ct = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);
    CIMDateTime *dt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);    CIMDateTime *dt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);
    jboolean     ret = 0;     jboolean     rv  = 0;
  
    if (  ct    if (  ct
       && dt       && dt
       )       )
    {    {
       ret = (jboolean)(ct->getDifference (*ct, *dt) < 0);        rv = (jboolean)(ct->getDifference (*ct, *dt) < 0);
    }    }
  
    return ret;     return rv;
 } }
  
 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1before JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1before
Line 2618 
Line 3423 
 { {
    CIMDateTime *ct  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);    CIMDateTime *ct  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);
    CIMDateTime *dt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);    CIMDateTime *dt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);
    jboolean     ret = 0;     jboolean     rv  = 0;
  
    if (  ct    if (  ct
       && dt       && dt
       )       )
    {    {
       ret = (jboolean)(ct->getDifference (*ct, *dt) > 0);        rv = (jboolean)(ct->getDifference (*ct, *dt) > 0);
    }    }
  
    return ret;     return rv;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
Line 2640 
Line 3445 
    DEBUG_ConvertCleanup (jlong, jDT);    DEBUG_ConvertCleanup (jlong, jDT);
 } }
  
   JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDateTime__1getCIMString
         (JNIEnv *jEnv, jobject jThs, jlong jDT)
   {
      CIMDateTime *cdt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
      jstring      jRet = 0;
   
      if (cdt)
      {
         String dateString = cdt->toString ();
   
         if (dateString.size () > 0)
         {
            jRet = jEnv->NewStringUTF (dateString.getCString ());
         }
      }
   
      return jRet;
   }
   
   JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDateTime__1getMicroseconds
         (JNIEnv *jEnv, jobject jThs, jlong jDT)
   {
      CIMDateTime *cdt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
      jlong        jRet = 0;
   
      if (cdt)
      {
         // Convert from 1 BCE epoch to POSIX 1970 microseconds
         jRet = cdt->toMicroSeconds () - PEGASUS_UINT64_LITERAL(62167219200000000);
      }
   
      return jRet;
   }
   
  
 // ------------------------------------- // -------------------------------------
 // --- // ---
Line 2664 
Line 3503 
    return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);    return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties(
       (JNIEnv *jEnv, jobject jThs, jlong jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)      JNIEnv *jEnv,
       jobject jThs,
       jlong jInst,
       jobjectArray jPl,
       jboolean iq,
       jboolean ic,
       jboolean lo)
 { {
    CIMInstance *ci   = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);    CIMInstance *ci   = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
    CIMInstance *cf   = 0;    CIMInstance *cf   = 0;
Line 2808 
Line 3653 
             }             }
             else             else
             {             {
                throw CIMException (CIM_ERR_TYPE_MISMATCH, String ("Property type mismatch"));                 throw CIMException(
                            CIM_ERR_TYPE_MISMATCH,
                            String ("Property type mismatch"));
             }             }
  
             ci->removeProperty (pos);             ci->removeProperty (pos);
Line 2816 
Line 3663 
          }          }
          else          else
          {          {
             CIMProperty *cp = new CIMProperty (CIMName (str), *cv);              CIMProperty *cp;
   
               if (cv->getType() != CIMTYPE_REFERENCE)
               {
                  cp = new CIMProperty (CIMName (str), *cv);
               }
               else
               {
                  if (!cv->isArray ())
                  {
                     CIMObjectPath cop;
   
                     cv->get (cop);
                     cp = new CIMProperty(CIMName(str),*cv,0,cop.getClassName());
                  }
                  else
                  {
                     throwCIMException(
                         jEnv,
                         "+++ unsupported type in CIMProperty.property");
                  }
               }
  
             ci->addProperty (*cp);             ci->addProperty (*cp);
          }          }
Line 2852 
Line 3720 
  
          JMPIjvm::checkException (jEnv);          JMPIjvm::checkException (jEnv);
  
          jlong        jCpRef = jEnv->CallLongMethod (jProp, JMPIjvm::jv.CIMPropertyCInst);           jlong jCpRef = jEnv->CallLongMethod(
          CIMProperty *cpNew  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jCpRef);                              jProp,
                               JMPIjvm::jv.CIMPropertyCInst);
            CIMProperty *cpNew = DEBUG_ConvertJavaToC(
                                     jlong,
                                     CIMProperty*,
                                     jCpRef);
  
          if (cpNew)          if (cpNew)
          {          {
Line 2870 
Line 3743 
                }                }
                else                else
                {                {
                   throw CIMException (CIM_ERR_TYPE_MISMATCH, String ("Property type mismatch"));                    throw CIMException(
                         CIM_ERR_TYPE_MISMATCH,
                         String ("Property type mismatch"));
                }                }
             }             }
          }          }
Line 2937 
Line 3812 
  
       for (Uint32 i = 0; i < keyNames.size (); i++)       for (Uint32 i = 0; i < keyNames.size (); i++)
       {       {
          DDD(PEGASUS_STD (cout) << "finding key " << keyNames[i].getString () << PEGASUS_STD (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 2945 
Line 3822 
  
             if (cp.getName () == keyNames[i])             if (cp.getName () == keyNames[i])
             {             {
                DDD(PEGASUS_STD (cout) << "adding key (" << j << ") " << keyNames[i].getString () << PEGASUS_STD (endl));                 PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                       "adding key (%d) %s ",i,
                       (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);
                jobject      jProp  = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,                 jobject jProp  = jEnv->NewObject(
                                            JMPIjvm::jv.CIMPropertyClassRef,
                                                       JMPIjvm::jv.CIMPropertyNewJ,                                                       JMPIjvm::jv.CIMPropertyNewJ,
                                                       jCpRef);                                                       jCpRef);
  
Line 2976 
Line 3856 
       CIMProperty *cp  = new CIMProperty (ci->getProperty (i));       CIMProperty *cp  = new CIMProperty (ci->getProperty (i));
       jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);       jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
  
       jobject prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jCp);        jobject prop = jEnv->NewObject(
                            JMPIjvm::jv.CIMPropertyClassRef,
                            JMPIjvm::jv.CIMPropertyNewJ,
                            jCp);
  
       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
Line 2984 
Line 3867 
    return jVec;    return jVec;
 } }
  
 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName(
       (JNIEnv *jEnv, jobject jThs, jlong jInst)      JNIEnv *jEnv,
       jobject jThs,
       jlong jInst)
 { {
    CIMInstance  *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);    CIMInstance  *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
    const String &cn = ci->getClassName ().getString ();    const String &cn = ci->getClassName ().getString ();
Line 3136 
Line 4021 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyI JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyI
   (JNIEnv *jEnv, jobject jThs, jlong jciCi, jint ji)   (JNIEnv *jEnv, jobject jThs, jlong jciCi, jint ji)
 { {
    CIMInstance *ci    = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);     CIMInstance *ci    = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);
    CIMProperty *cpRet = NULL;     CIMProperty *cpRet = NULL;
   
      try
      {
         if (ci)
         {
            CIMProperty  cp;
   
            cp = ci->getProperty (ji);
   
            cpRet = new CIMProperty (cp);
         }
      }
      Catch (jEnv);
   
      return DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRet);
   }
   
   
   // -------------------------------------
   // ---
   // -        CIMMethod
   // ---
   // -------------------------------------
   
   JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
         (JNIEnv *jEnv, jobject jThs, jlong jM)
   {
      CIMMethod *cm       = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
      bool       fSuccess = false;
      jint       jType    = 0;
   
      if (cm)
      {
         CIMType ct = cm->getType ();
   
         jType = _dataType::convertCTypeToJavaType (ct, &fSuccess);
      }
   
      return jType;
   }
   
   JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMMethod__1getName
         (JNIEnv *jEnv, jobject jThs, jlong jM)
   {
      CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
      jstring    str = 0;
   
      if (cm)
      {
         CIMName cn = cm->getName ();
   
         str = jEnv->NewStringUTF (cn.getString ().getCString ());
      }
   
      return str;
   }
   
   JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1findParameter
         (JNIEnv *jEnv, jobject jThs, jlong jM, jstring jName)
   {
      CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
      jint       rv  = -1;
   
      if (cm && jName)
      {
         const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
   
         try
         {
            CIMName name (cstrName);
   
            rv = cm->findParameter (name);
         }
         Catch (jEnv);
   
         jEnv->ReleaseStringUTFChars (jName, cstrName);
      }
   
      return rv;
   }
   
   JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMMethod__1getParameter
         (JNIEnv *jEnv, jobject jThs, jlong jM, jint jParameter)
   {
      CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
      jlong      rv  = 0;
  
    try     if (cm && jParameter >= 0)
    {    {
       if (ci)        try
       {       {
          CIMProperty  cp;           CIMParameter cp = cm->getParameter (jParameter);
   
          cp = ci->getProperty (ji);  
  
          cpRet = new CIMProperty (cp);           rv = DEBUG_ConvertCToJava(CIMParameter *, jlong, new CIMParameter(cp));
       }  
    }    }
    Catch (jEnv);    Catch (jEnv);
   
    return DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRet);  
 } }
  
      return rv;
   }
  
 // -------------------------------------  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getParameterCount
 // ---  
 // -            CIMMethod  
 // ---  
 // -------------------------------------  
   
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType  
       (JNIEnv *jEnv, jobject jThs, jlong jM)       (JNIEnv *jEnv, jobject jThs, jlong jM)
 { {
    CIMMethod *cm       = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);    CIMMethod *cm       = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
    bool       fSuccess = false;     jint       rv  = 0;
    jint       jType    = 0;  
  
    if (cm)    if (cm)
    {    {
       CIMType ct = cm->getType ();        try
         {
       jType = _dataType::convertCTypeToJavaType (ct, &fSuccess);           rv = cm->getParameterCount ();
         }
         Catch (jEnv);
    }    }
  
    return jType;     return rv;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
Line 3201 
Line 4164 
    port_ = 0;    port_ = 0;
    hostName_ = System::getHostName ();    hostName_ = System::getHostName ();
    nameSpace_ = "root/cimv2";    nameSpace_ = "root/cimv2";
      fHttps = false;
 } }
  
 _nameSpace::_nameSpace (String hn) _nameSpace::_nameSpace (String hn)
Line 3208 
Line 4172 
    port_ = 0;    port_ = 0;
    hostName_ = hn;    hostName_ = hn;
    nameSpace_ = "root/cimv2";    nameSpace_ = "root/cimv2";
      fHttps = false;
 } }
  
 _nameSpace::_nameSpace (String hn, String ns) _nameSpace::_nameSpace (String hn, String ns)
Line 3215 
Line 4180 
     port_ = 0;     port_ = 0;
     hostName_ = hn;     hostName_ = hn;
     nameSpace_ = ns;     nameSpace_ = ns;
       fHttps = false;
 } }
  
 int _nameSpace::port () int _nameSpace::port ()
Line 3226 
Line 4192 
  
    if (hostName_.subString (0,7) == "http://")    if (hostName_.subString (0,7) == "http://")
    {    {
       protocol_ = "http://";        protocol_ = hostName_.subString (0,7);
       hostName_ = hostName_.subString (7);       hostName_ = hostName_.subString (7);
    }    }
      else if (hostName_.subString (0,8) == "https://")
      {
         protocol_ = hostName_.subString (0,8);
         hostName_ = hostName_.subString (8);
         fHttps = true;
      }
  
    Sint32 p = hostName_.reverseFind (':');    Sint32 p = hostName_.reverseFind (':');
  
Line 3254 
Line 4226 
    return nameSpace_;    return nameSpace_;
 } }
  
   Boolean _nameSpace::isHttps ()
   {
      port ();
      return fHttps;
   }
   
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
   (JNIEnv *jEnv, jobject jThs)   (JNIEnv *jEnv, jobject jThs)
 { {
Line 3276 
Line 4254 
 { {
    const char *hn    = jEnv->GetStringUTFChars (jHn, NULL);    const char *hn    = jEnv->GetStringUTFChars (jHn, NULL);
    const char *ns    = jEnv->GetStringUTFChars (jNs, NULL);    const char *ns    = jEnv->GetStringUTFChars (jNs, NULL);
    jlong       cInst = DEBUG_ConvertCToJava (_nameSpace*, jlong, new _nameSpace (String (hn),String (ns)));     jlong cInst = DEBUG_ConvertCToJava(
                        _nameSpace*,
                        jlong,
                        new _nameSpace(String (hn),String (ns)));
  
    jEnv->ReleaseStringUTFChars (jHn, hn);    jEnv->ReleaseStringUTFChars (jHn, hn);
    jEnv->ReleaseStringUTFChars (jNs, ns);    jEnv->ReleaseStringUTFChars (jNs, ns);
Line 3640 
Line 4621 
       if (t != CIMKeyBinding::REFERENCE)       if (t != CIMKeyBinding::REFERENCE)
          cp = new CIMProperty (n, *cv);          cp = new CIMProperty (n, *cv);
       else       else
          cp = new CIMProperty (n, *cv, 0, ((CIMObjectPath) akb[i].getValue ()).getClassName ());           cp = new CIMProperty(
                         n,
                         *cv,
                         0,
                         ((CIMObjectPath) akb[i].getValue()).getClassName());
  
       jlong   jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);       jlong   jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
       jobject prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jCp);        jobject prop = jEnv->NewObject(
                            JMPIjvm::jv.CIMPropertyClassRef,
                            JMPIjvm::jv.CIMPropertyNewJ,
                            jCp);
  
       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
    }    }
Line 3724 
Line 4712 
       (JNIEnv *jEnv, jobject jThs, jlong jCop)       (JNIEnv *jEnv, jobject jThs, jlong jCop)
 { {
    CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
    CIMObjectPath *copl = new CIMObjectPath (cop->getHost (), cop->getNameSpace (), cop->getClassName (), cop->getKeyBindings ());     CIMObjectPath *copl = new CIMObjectPath(
                                    cop->getHost(),
                                    cop->getNameSpace(),
                                    cop->getClassName(),
                                    cop->getKeyBindings());
  
    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, copl);    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, copl);
 } }
Line 3872 
Line 4864 
                                                  (Boolean)iq,                                                  (Boolean)iq,
                                                  (Boolean)ic);                                                  (Boolean)ic);
  
       return DEBUG_ConvertCToJava (Array<CIMClass>*, jlong, new Array<CIMClass> (en));        return DEBUG_ConvertCToJava(
                    Array<CIMClass>*,
                    jlong,
                    new Array<CIMClass> (en));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance(
    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean lo, jboolean iq, jboolean ic,      JNIEnv *jEnv,
       jobject jThs,
       jlong jCh,
       jlong jCop,
       jboolean lo,
       jboolean iq,
       jboolean ic,
         jobjectArray jPl)         jobjectArray jPl)
 { {
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
Line 3894 
Line 4895 
       pl = CIMPropertyList ();       pl = CIMPropertyList ();
  
    try {    try {
       CIMInstance *inst = new CIMInstance (ch->getInstance (ctx,        CIMInstance *inst = new CIMInstance(ch->getInstance(
                                                     ctx,
                                                             cop->getNameSpace (),                                                             cop->getNameSpace (),
                                                             *cop,                                                             *cop,
                                                             (Boolean)lo,                                                             (Boolean)lo,
Line 3965 
Line 4967 
    Catch (jEnv);    Catch (jEnv);
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames  JNIEXPORT jlong JNICALL
   (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean deep)  Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames(
       JNIEnv *jEnv,
       jobject jThs,
       jlong jCh,
       jlong jCop,
       jboolean deep)
 { {
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
    OperationContext  ctx;    OperationContext  ctx;
  
    try {    try {
       Array<CIMObjectPath> enm = ch->enumerateInstanceNames (ctx,        Array<CIMObjectPath> enm = ch->enumerateInstanceNames(
                                            ctx,
                                                              cop->getNameSpace (),                                                              cop->getNameSpace (),
                                                              cop->getClassName ()); //, (Boolean)deep);                                           cop->getClassName());
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMObjectPath>*,
                    jlong,
                    new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 4007 
Line 5018 
                                                       (Boolean)ic,                                                       (Boolean)ic,
                                                       pl);                                                       pl);
  
       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, new Array<CIMInstance> (en));        return DEBUG_ConvertCToJava(
                    Array<CIMInstance>*,
                    jlong,
                    new Array<CIMInstance> (en));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery(
   (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jstring jQuery, jstring jQl)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCh,
       jlong jCop,
       jstring jQuery,
       jstring jQl)
 { {
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 4097 
Line 5116 
    Catch (jEnv);    Catch (jEnv);
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames(
   (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop,      JNIEnv *jEnv,
    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)      jobject jThs,
       jlong jCh,
       jlong jCop,
       jstring jAssocClass,
       jstring jResultClass,
       jstring jRole,
       jstring jResultRole)
 { {
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 4121 
Line 5146 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4148 
Line 5174 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid result class name"));                                         jEnv->NewStringUTF(
                                              "Invalid result class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4179 
Line 5206 
                                                       role,                                                       role,
                                                       resultRole);                                                       resultRole);
  
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMObjectPath>*,
                    jlong,
                    new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators(
   (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop,      JNIEnv *jEnv,
    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,      jobject jThs,
    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)      jlong jCh,
       jlong jCop,
       jstring jAssocClass,
       jstring jResultClass,
       jstring jRole,
       jstring jResultRole,
       jboolean includeQualifiers,
       jboolean includeClassOrigin,
       jobjectArray jPl)
 { {
    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
Line 4211 
Line 5249 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4238 
Line 5277 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid result class name"));                                         jEnv->NewStringUTF(
                                              "Invalid result class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4261 
Line 5301 
    jEnv->ReleaseStringUTFChars (jResultRole, str);    jEnv->ReleaseStringUTFChars (jResultRole, str);
  
    try {    try {
       Array<CIMObject>    enm     = ch->associators (ctx,        Array<CIMObject> enm = ch->associators(
                                        ctx,
                                                      cop->getNameSpace (),                                                      cop->getNameSpace (),
                                                      *cop,                                                      *cop,
                                                      assocClass,                                                      assocClass,
Line 4308 
Line 5349 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4331 
Line 5373 
                                                      assocClass,                                                      assocClass,
                                                      role);                                                      role);
  
       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm));        return DEBUG_ConvertCToJava(
                    Array<CIMObjectPath>*,
                    jlong,
                    new Array<CIMObjectPath> (enm));
    }    }
    Catch (jEnv);    Catch (jEnv);
  
Line 4363 
Line 5408 
          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
                                        JMPIjvm::jv.CIMExceptionNewISt,                                        JMPIjvm::jv.CIMExceptionNewISt,
                                        (jint)4, // CIM_ERR_INVALID_PARAMETER                                        (jint)4, // CIM_ERR_INVALID_PARAMETER
                                        jEnv->NewStringUTF ("Invalid association class name"));                                         jEnv->NewStringUTF(
                                              "Invalid association class name"));
  
          jEnv->Throw ((jthrowable)ev);          jEnv->Throw ((jthrowable)ev);
  
Line 4402 
Line 5448 
    return 0;    return 0;
 } }
  
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod(
   (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jstring jMn, jobject jIn, jobject jOut)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCh,
       jlong jCop,
       jstring jMn,
       jobject jIn,
       jobject jOut)
 { {
    JMPIjvm::cacheIDs (jEnv);    JMPIjvm::cacheIDs (jEnv);
  
Line 4513 
Line 5565 
             CIMParamValue *parm  = new CIMParamValue (out[i]);             CIMParamValue *parm  = new CIMParamValue (out[i]);
             jlong          jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);             jlong          jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);
  
             jEnv->SetObjectArrayElement (jOut,i,              jEnv->SetObjectArrayElement(
                                         jEnv->NewObject (JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewJ,jParm));                  jOut,
                   i,
                   jEnv->NewObject(
                       JMPIjvm::jv.CIMArgumentClassRef,
                       JMPIjvm::jv.CIMArgumentNewJ,jParm));
          }          }
       }       }
       return DEBUG_ConvertCToJava (CIMValue*, jlong, val);       return DEBUG_ConvertCToJava (CIMValue*, jlong, val);
Line 4524 
Line 5580 
    return 0;    return 0;
 } }
  
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(
    (JNIEnv *jEnv, jobject jThs, jlong jCh, jstring jName, jstring jNs, jlong jInd)      JNIEnv *jEnv,
       jobject jThs,
       jlong jCh,
       jstring jName,
       jstring jNs,
       jlong jInd)
 { {
    CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);    CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
    CIMInstance *ind = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInd);    CIMInstance *ind = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInd);
Line 4543 
Line 5604 
    CIMObjectPath ref (ind->getPath ());    CIMObjectPath ref (ind->getPath ());
  
    ref.setNameSpace (ns);    ref.setNameSpace (ns);
    DDD (PEGASUS_STD (cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ref = "<<ref.toString ()<<PEGASUS_STD (endl));  
    DDD (PEGASUS_STD (cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ind = "<<ind->getPath ().toString ()<<PEGASUS_STD (endl));     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
          "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ref = %s",
          (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 (PEGASUS_STD (cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () ind = "<<ind->getPath ().toString ()<<PEGASUS_STD (endl));  
      PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
          "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 4557 
Line 5627 
       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 (PEGASUS_STD (cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () fResult = "<<fResult<<", name = "<<name<<PEGASUS_STD (endl));            "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
             "fResult = %d, name = %s",
             fResult,(const char*)name.getCString()));
    }    }
  
    if (fResult)    if (fResult)
Line 4574 
Line 5646 
    }    }
    else    else
    {    {
       DDD (PEGASUS_STD (cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent () provider name \""<<name<<"\" not found"<<PEGASUS_STD (endl));        PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL1,
             "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
             "provider name \"%s\" not found",
             (const char*)name.getCString()));
    }    }
 } }
  
Line 4591 
Line 5666 
  
 // ------------------------------------- // -------------------------------------
 // --- // ---
   // -        CIMParameter
   // ---
   // -------------------------------------
   
   JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMParameter__1getName
      (JNIEnv *jEnv, jobject jThs, jlong jCp)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
      jstring       rv  = 0;
   
      if (cp)
      {
         try
         {
            CIMName name = cp->getName ();
   
            rv = jEnv->NewStringUTF (name.getString ().getCString ());
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMParameter__1setName
      (JNIEnv *jEnv, jobject jThs, jlong jCp, jstring jName)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
   
      if (cp && jName)
      {
         try
         {
            const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
   
            CIMName name (cstrName);
   
            cp->setName (name);
   
            jEnv->ReleaseStringUTFChars (jName, cstrName);
         }
         Catch (jEnv);
      }
   }
   
   JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMParameter__1isArray
      (JNIEnv *jEnv, jobject jThs, jlong jCp)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
      jboolean      rv  = 0;
   
      if (cp)
      {
         try
         {
            rv = cp->isArray ();
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMParameter__1getArraySize
      (JNIEnv *jEnv, jobject jThs, jlong jCp)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
      jint          rv  = 0;
   
      if (cp)
      {
         try
         {
            rv = cp->getArraySize ();
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT jstring JNICALL
   Java_org_pegasus_jmpi_CIMParameter__1getReferenceClassName(
       JNIEnv *jEnv,
       jobject jThs,
       jlong jCp)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
      jstring       rv  = 0;
   
      if (cp)
      {
         try
         {
            CIMName name = cp->getReferenceClassName ();
   
            rv = jEnv->NewStringUTF (name.getString ().getCString ());
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMParameter__1getType
      (JNIEnv *jEnv, jobject jThs, jlong jCp)
   {
      CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
      jlong         rv  = 0;
   
      if (cp)
      {
         try
         {
            CIMType    ct       = cp->getType ();
            bool       fSuccess = false;
            String     ref      = cp->getReferenceClassName ().getString ();
            int        iJType   = 0;
            _dataType *type     = 0;
   
            iJType = _dataType::convertCTypeToJavaType (ct, &fSuccess);
   
            if (fSuccess)
            {
               type = new _dataType (iJType,
                                     cp->getArraySize (),
                                     false,
                                     false,
                                     cp->isArray (),
                                     ref,
                                     true);
   
               rv = DEBUG_ConvertCToJava (_dataType*, jlong, type);
            }
         }
         Catch (jEnv);
      }
   
      return rv;
   }
   
   JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMParameter__1finalize
      (JNIEnv *jEnv, jobject jThs, jlong jCp)
   {
      CIMParameter *cp = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
   
      delete cp;
   
      DEBUG_ConvertCleanup (jlong, jCp);
   }
   
   
   // -------------------------------------
   // ---
 // -            CIMProperty // -            CIMProperty
 // --- // ---
 // ------------------------------------- // -------------------------------------
Line 4649 
Line 5878 
          }          }
          else          else
          {          {
             throwCIMException (jEnv,"+++ unsupported type in CIMProperty.property");              throwCIMException(
                   jEnv,
                   "+++ unsupported type in CIMProperty.property");
          }          }
       }       }
  
Line 5111 
Line 6342 
  
    if (qt->isUninitialized ())    if (qt->isUninitialized ())
    {    {
       CIMQualifierDecl *nqt = new CIMQualifierDecl (CIMName (str), CIMValue (), CIMScope ());        CIMQualifierDecl *nqt = new CIMQualifierDecl(
                                         CIMName(str),
                                         CIMValue(),
                                         CIMScope());
  
       jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, nqt);       jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, nqt);
    }    }
Line 5304 
Line 6538 
       cv = new CIMValue (s8);       cv = new CIMValue (s8);
    }    }
  
    jEnv->ReleaseShortArrayElements (jshortA, jsA, len);     jEnv->ReleaseShortArrayElements (jshortA, jsA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5336 
Line 6570 
       cv = new CIMValue (s16);       cv = new CIMValue (s16);
    }    }
  
    jEnv->ReleaseIntArrayElements (jintA, jiA, len);     jEnv->ReleaseIntArrayElements (jintA, jiA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5368 
Line 6602 
       cv = new CIMValue (s32);       cv = new CIMValue (s32);
    }    }
  
    jEnv->ReleaseLongArrayElements (jlongA, jlA, len);     jEnv->ReleaseLongArrayElements (jlongA, jlA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5400 
Line 6634 
       cv = new CIMValue (s64);       cv = new CIMValue (s64);
    }    }
  
    jEnv->ReleaseLongArrayElements (jlongA, jlA, len);     jEnv->ReleaseLongArrayElements (jlongA, jlA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5441 
Line 6675 
  
    cv = new CIMValue (bA);    cv = new CIMValue (bA);
  
    jEnv->ReleaseBooleanArrayElements (jboolA, jbA, len);     jEnv->ReleaseBooleanArrayElements (jboolA, jbA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5460 
Line 6694 
  
    cv = new CIMValue (fA);    cv = new CIMValue (fA);
  
    jEnv->ReleaseFloatArrayElements (jfloatA, jfA, len);     jEnv->ReleaseFloatArrayElements (jfloatA, jfA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5479 
Line 6713 
  
    cv = new CIMValue (dA);    cv = new CIMValue (dA);
  
    jEnv->ReleaseDoubleArrayElements (jdoubleA, jdA, len);     jEnv->ReleaseDoubleArrayElements (jdoubleA, jdA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5501 
Line 6735 
  
    cv = new CIMValue (cA);    cv = new CIMValue (cA);
  
    jEnv->ReleaseLongArrayElements (jlongA, jiA, len);     jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5523 
Line 6757 
  
    cv = new CIMValue (cA);    cv = new CIMValue (cA);
  
    jEnv->ReleaseLongArrayElements (jlongA, jiA, len);     jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5545 
Line 6779 
  
    cv = new CIMValue (cA);    cv = new CIMValue (cA);
  
    jEnv->ReleaseLongArrayElements (jlongA, jiA, len);     jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5564 
Line 6798 
  
    cv = new CIMValue (cA);    cv = new CIMValue (cA);
  
    jEnv->ReleaseCharArrayElements (jcharA, jcA, len);     jEnv->ReleaseCharArrayElements (jcharA, jcA, 0);
  
    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
 } }
Line 5700 
Line 6934 
       {       {
          CIMObjectPath ref;          CIMObjectPath ref;
          cv->get (ref);          cv->get (ref);
          jlong jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jlong, new CIMObjectPath (ref));           jlong jOp = DEBUG_ConvertCToJava(
          return jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,                           CIMObjectPath*,
                            jlong,
                            new CIMObjectPath (ref));
            return jEnv->NewObject(
                             JMPIjvm::jv.CIMObjectPathClassRef,
                                  JMPIjvm::jv.CIMObjectPathNewJ,                                  JMPIjvm::jv.CIMObjectPathNewJ,
                                  jOp);                                  jOp);
       }       }
Line 5717 
Line 6955 
       {       {
          CIMDateTime dt;          CIMDateTime dt;
          cv->get (dt);          cv->get (dt);
          jlong jDT = DEBUG_ConvertCToJava (CIMDateTime*, jlong, new CIMDateTime (dt));           jlong jDT = DEBUG_ConvertCToJava(
                            CIMDateTime*, jlong,
                            new CIMDateTime(dt));
          return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,          return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
                                  JMPIjvm::jv.CIMDateTimeNewJ,                                  JMPIjvm::jv.CIMDateTimeNewJ,
                                  jDT);                                  jDT);
Line 5728 
Line 6968 
          cv->get (co);          cv->get (co);
          if (co.isClass ())          if (co.isClass ())
          {          {
             jlong jCC = DEBUG_ConvertCToJava (CIMClass*, jlong, new CIMClass (co));              jlong jCC = DEBUG_ConvertCToJava(
                               CIMClass*,
                               jlong,
                               new CIMClass (co));
  
             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
                                     JMPIjvm::jv.CIMObjectNewJZ,                                     JMPIjvm::jv.CIMObjectNewJZ,
Line 5737 
Line 6980 
          }          }
          else          else
          {          {
             jlong jCI = DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance (co));              jlong jCI = DEBUG_ConvertCToJava(
                               CIMInstance*,
                               jlong,
                               new CIMInstance (co));
  
             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
                                     JMPIjvm::jv.CIMObjectNewJZ,                                     JMPIjvm::jv.CIMObjectNewJZ,
Line 5760 
Line 7006 
          cv->get (bo);          cv->get (bo);
  
          int          s         = bo.size ();          int          s         = bo.size ();
          jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray(
                                                      s,
                                                                       JMPIjvm::jv.BooleanClassRef,                                                                       JMPIjvm::jv.BooleanClassRef,
                                                                       0);                                                                       0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jbooleanA,           {
               jEnv->SetObjectArrayElement(
                   jbooleanA,
                                         i,                                         i,
                                         jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.BooleanClassRef,
                                                          JMPIjvm::jv.BooleanNewZ,                                                          JMPIjvm::jv.BooleanNewZ,
                                                          (jboolean)bo[i]));                                                          (jboolean)bo[i]));
            }
          return jbooleanA;          return jbooleanA;
       }       }
       case CIMTYPE_SINT8:       case CIMTYPE_SINT8:
Line 5779 
Line 7030 
          cv->get (s8);          cv->get (s8);
  
          int          s      = s8.size ();          int          s      = s8.size ();
          jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray(
                                                   s,
                                                                    JMPIjvm::jv.ByteClassRef,                                                                    JMPIjvm::jv.ByteClassRef,
                                                                    0);                                                                    0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jbyteA,           {
               jEnv->SetObjectArrayElement(
                   jbyteA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.ByteClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.ByteClassRef,
                                                           JMPIjvm::jv.ByteNewB,                                                           JMPIjvm::jv.ByteNewB,
                                                           (jbyte)s8[i]));                                                           (jbyte)s8[i]));
            }
          return jbyteA;          return jbyteA;
       }       }
       case CIMTYPE_UINT8:       case CIMTYPE_UINT8:
Line 5798 
Line 7054 
          cv->get (u8);          cv->get (u8);
  
          int          s       = u8.size ();          int          s       = u8.size ();
          jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray(
                                                  s,
                                                                     JMPIjvm::jv.UnsignedInt8ClassRef,                                                                     JMPIjvm::jv.UnsignedInt8ClassRef,
                                                                     0);                                                                     0);
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jshortA,           {
                jEnv->SetObjectArrayElement(
                    jshortA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,                   jEnv->NewObject(
                        JMPIjvm::jv.UnsignedInt8ClassRef,
                                                           JMPIjvm::jv.UnsignedInt8NewS,                                                           JMPIjvm::jv.UnsignedInt8NewS,
                                                           (jshort)u8[i]));                                                           (jshort)u8[i]));
            }
          return jshortA;          return jshortA;
       }       }
       case CIMTYPE_SINT16:       case CIMTYPE_SINT16:
Line 5816 
Line 7077 
          cv->get (s16);          cv->get (s16);
  
          int          s       = s16.size ();          int          s       = s16.size ();
          jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray(
                                        s,
                                                                     JMPIjvm::jv.ShortClassRef,                                                                     JMPIjvm::jv.ShortClassRef,
                                                                     0);                                                                     0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jshortA,           {
                jEnv->SetObjectArrayElement(
                    jshortA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.ShortClassRef,                   jEnv->NewObject(
                        JMPIjvm::jv.ShortClassRef,
                                                           JMPIjvm::jv.ShortNewS,                                                           JMPIjvm::jv.ShortNewS,
                                                           (jshort)s16[i]));                                                           (jshort)s16[i]));
            }
          return jshortA;          return jshortA;
       }       }
       case CIMTYPE_UINT16:       case CIMTYPE_UINT16:
Line 5835 
Line 7101 
          cv->get (u16);          cv->get (u16);
  
          int          s     = u16.size ();          int          s     = u16.size ();
          jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray(
                                     s,
                                                                   JMPIjvm::jv.UnsignedInt16ClassRef,                                                                   JMPIjvm::jv.UnsignedInt16ClassRef,
                                                                   0);                                                                   0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jintA,           {
                jEnv->SetObjectArrayElement(
                    jintA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,                   jEnv->NewObject(
                        JMPIjvm::jv.UnsignedInt16ClassRef,
                                                           JMPIjvm::jv.UnsignedInt16NewI,                                                           JMPIjvm::jv.UnsignedInt16NewI,
                                                           (jint)u16[i]));                                                           (jint)u16[i]));
            }
          return jintA;          return jintA;
       }       }
       case CIMTYPE_SINT32:       case CIMTYPE_SINT32:
Line 5854 
Line 7125 
          cv->get (s32);          cv->get (s32);
  
          int          s     = s32.size ();          int          s     = s32.size ();
          jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray(
                                     s,
                                                                   JMPIjvm::jv.IntegerClassRef,                                                                   JMPIjvm::jv.IntegerClassRef,
                                                                   0);                                                                   0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jintA,           {
               jEnv->SetObjectArrayElement(
                   jintA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.IntegerClassRef,
                                                           JMPIjvm::jv.IntegerNewI,                                                           JMPIjvm::jv.IntegerNewI,
                                                           (jint)s32[i]));                                                           (jint)s32[i]));
            }
          return jintA;          return jintA;
       }       }
       case CIMTYPE_UINT32:       case CIMTYPE_UINT32:
       {       {
          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,           jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray(
                                      s,
                                                                    JMPIjvm::jv.UnsignedInt32ClassRef,                                                                    JMPIjvm::jv.UnsignedInt32ClassRef,
                                                                    0);                                                                    0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jlongA,           {
               jEnv->SetObjectArrayElement(
                   jlongA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.UnsignedInt32ClassRef,
                                                           JMPIjvm::jv.UnsignedInt32NewJ,                                                           JMPIjvm::jv.UnsignedInt32NewJ,
                                                           (jlong)u32[i]));                                                           (jlong)u32[i]));
            }
          return jlongA;          return jlongA;
       }       }
       case CIMTYPE_SINT64:       case CIMTYPE_SINT64:
Line 5892 
Line 7171 
          cv->get (s64);          cv->get (s64);
  
          int          s      = s64.size ();          int          s      = s64.size ();
          jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray(
                                      s,
                                                                    JMPIjvm::jv.LongClassRef,                                                                    JMPIjvm::jv.LongClassRef,
                                                                    0);                                                                    0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jlongA,           {
               jEnv->SetObjectArrayElement(
                   jlongA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.LongClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.LongClassRef,
                                                           JMPIjvm::jv.LongNewJ,                                                           JMPIjvm::jv.LongNewJ,
                                                           (jlong)s64[i]));                                                           (jlong)s64[i]));
            }
          return jlongA;          return jlongA;
       }       }
       case CIMTYPE_UINT64:       case CIMTYPE_UINT64:
       {       {
          Array<Uint64> u64;          Array<Uint64> u64;
   
          cv->get (u64);          cv->get (u64);
   
          int          s     = u64.size ();          int          s     = u64.size ();
          jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray(
                                     s,
                                                                   JMPIjvm::jv.UnsignedInt64ClassRef,                                                                   JMPIjvm::jv.UnsignedInt64ClassRef,
                                                                   0);                                                                   0);
  
Line 5927 
Line 7210 
  
             if (jString)             if (jString)
             {             {
                jBIG = jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,                 jBIG = jEnv->NewObject(
                             JMPIjvm::jv.UnsignedInt64ClassRef,
                                        JMPIjvm::jv.UnsignedInt64NewStr,                                        JMPIjvm::jv.UnsignedInt64NewStr,
                                        jString);                                        jString);
             }             }
  
             if (jBIG)             if (jBIG)
             {             {
                jEnv->SetObjectArrayElement (ju64A,                 jEnv->SetObjectArrayElement(
                      ju64A,
                                             i,                                             i,
                                             jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,                     jEnv->NewObject(
                          JMPIjvm::jv.UnsignedInt64ClassRef,
                                                              JMPIjvm::jv.UnsignedInt64NewBi,                                                              JMPIjvm::jv.UnsignedInt64NewBi,
                                                              jBIG));                                                              jBIG));
             }             }
Line 5946 
Line 7232 
       case CIMTYPE_REAL32:       case CIMTYPE_REAL32:
       {       {
          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,           jobjectArray jfloatA = (jobjectArray)jEnv->NewObjectArray(
                                       s,
                                                                     JMPIjvm::jv.FloatClassRef,                                                                     JMPIjvm::jv.FloatClassRef,
                                                                     0);                                                                     0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jfloatA,           {
               jEnv->SetObjectArrayElement(
                   jfloatA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.FloatClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.FloatClassRef,
                                                           JMPIjvm::jv.FloatNewF,                                                           JMPIjvm::jv.FloatNewF,
                                                           (jfloat)r32[i]));                                                           (jfloat)r32[i]));
            }
          return jfloatA;          return jfloatA;
       }       }
       case CIMTYPE_REAL64:       case CIMTYPE_REAL64:
Line 5969 
Line 7258 
          cv->get (r64);          cv->get (r64);
  
          int          s        = r64.size ();          int          s        = r64.size ();
          jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray(
                                        s,
                                                                      JMPIjvm::jv.DoubleClassRef,                                                                      JMPIjvm::jv.DoubleClassRef,
                                                                      0);                                                                      0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jdoubleA,           {
               jEnv->SetObjectArrayElement(
                   jdoubleA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.DoubleClassRef,
                                                           JMPIjvm::jv.DoubleNewD,                                                           JMPIjvm::jv.DoubleNewD,
                                                           (jdouble)r64[i]));                                                           (jdouble)r64[i]));
            }
          return jdoubleA;          return jdoubleA;
       }       }
       case CIMTYPE_STRING:       case CIMTYPE_STRING:
       {       {
          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,           jobjectArray jstringA = (jobjectArray)jEnv->NewObjectArray(
                                        s,
                                                                      JMPIjvm::jv.StringClassRef,                                                                      JMPIjvm::jv.StringClassRef,
                                                                      0);                                                                      0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jstringA,           {
               jEnv->SetObjectArrayElement(
                   jstringA,
                                          i,                                          i,
                                          jEnv->NewStringUTF (str[i].getCString ()));                                          jEnv->NewStringUTF (str[i].getCString ()));
            }
          return jstringA;          return jstringA;
       }       }
       case CIMTYPE_REFERENCE:       case CIMTYPE_REFERENCE:
Line 6005 
Line 7301 
          cv->get (ref);          cv->get (ref);
  
          int          s     = ref.size ();          int          s     = ref.size ();
          jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray(
                                     s,
                                                                   JMPIjvm::jv.CIMObjectPathClassRef,                                                                   JMPIjvm::jv.CIMObjectPathClassRef,
                                                                   0);                                                                   0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
          {          {
             jlong jOP = DEBUG_ConvertCToJava (CIMObjectPath*, jlong, new CIMObjectPath (ref[i]));              jlong jOP = DEBUG_ConvertCToJava(
                               CIMObjectPath*,
                               jlong,
                               new CIMObjectPath(ref[i]));
  
             jEnv->SetObjectArrayElement (jrefA,             jEnv->SetObjectArrayElement (jrefA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,                                           jEnv->NewObject(
                                                JMPIjvm::jv.CIMObjectPathClassRef,
                                                           JMPIjvm::jv.CIMObjectPathNewJ,                                                           JMPIjvm::jv.CIMObjectPathNewJ,
                                                           jOP));                                                           jOP));
          }          }
Line 6028 
Line 7329 
          cv->get (c16);          cv->get (c16);
  
          int          s     = c16.size ();          int          s     = c16.size ();
          jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray(
                                     s,
                                                                   JMPIjvm::jv.CharacterClassRef,                                                                   JMPIjvm::jv.CharacterClassRef,
                                                                   0);                                                                   0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
             jEnv->SetObjectArrayElement (jc16A,           {
               jEnv->SetObjectArrayElement(
                   jc16A,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.CharacterClassRef,
                                                           JMPIjvm::jv.CharacterNewC,                                                           JMPIjvm::jv.CharacterNewC,
                                                           (jchar)c16[i]));                                                           (jchar)c16[i]));
            }
          return jc16A;          return jc16A;
       }       }
       case CIMTYPE_DATETIME:       case CIMTYPE_DATETIME:
Line 6048 
Line 7353 
          cv->get (dt);          cv->get (dt);
  
          int          s    = dt.size ();          int          s    = dt.size ();
          jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray(
                                    s,
                                                                  JMPIjvm::jv.CIMDateTimeClassRef,                                                                  JMPIjvm::jv.CIMDateTimeClassRef,
                                                                  0);                                                                  0);
  
          for (int i = 0; i < s; i++)          for (int i = 0; i < s; i++)
          {          {
             jlong jDT = DEBUG_ConvertCToJava (CIMDateTime*, jlong, new CIMDateTime (dt[i]));              jlong jDT = DEBUG_ConvertCToJava(
                               CIMDateTime*,
                               jlong,
                               new CIMDateTime (dt[i]));
  
             jEnv->SetObjectArrayElement (jdtA,              jEnv->SetObjectArrayElement(
                   jdtA,
                                          i,                                          i,
                                          jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,                  jEnv->NewObject(
                       JMPIjvm::jv.CIMDateTimeClassRef,
                                                           JMPIjvm::jv.CIMDateTimeNewJ,                                                           JMPIjvm::jv.CIMDateTimeNewJ,
                                                           jDT));                                                           jDT));
          }          }
Line 6071 
Line 7382 
          cv->get (co);          cv->get (co);
  
          int          s    = co.size ();          int          s    = co.size ();
          jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray (s,           jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray(
                                    s,
                                                                  JMPIjvm::jv.CIMObjectClassRef,                                                                  JMPIjvm::jv.CIMObjectClassRef,
                                                                  0);                                                                  0);
  
Line 6079 
Line 7391 
          {          {
             if (co[i].isClass ())             if (co[i].isClass ())
             {             {
                jlong jCC = DEBUG_ConvertCToJava (CIMClass*, jlong, new CIMClass (co[i]));                 jlong jCC = DEBUG_ConvertCToJava(
                                  CIMClass*,
                                  jlong,
                                  new CIMClass (co[i]));
  
                jEnv->SetObjectArrayElement (jcoA,                 jEnv->SetObjectArrayElement(
                      jcoA,
                                             i,                                             i,
                                             jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,                     jEnv->NewObject(
                          JMPIjvm::jv.CIMObjectClassRef,
                                                              JMPIjvm::jv.CIMObjectNewJZ,                                                              JMPIjvm::jv.CIMObjectNewJZ,
                                                              jCC,                                                              jCC,
                                                              (jboolean)true));                                                              (jboolean)true));
             }             }
             else             else
             {             {
                jlong jCI = DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance (co[i]));                 jlong jCI = DEBUG_ConvertCToJava(
                                  CIMInstance*,
                                  jlong,
                                  new CIMInstance (co[i]));
  
                jEnv->SetObjectArrayElement (jcoA,                 jEnv->SetObjectArrayElement(
                      jcoA,
                                             i,                                             i,
                                             jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,                     jEnv->NewObject(
                          JMPIjvm::jv.CIMObjectClassRef,
                                                              JMPIjvm::jv.CIMObjectNewJZ,                                                              JMPIjvm::jv.CIMObjectNewJZ,
                                                              jCI,                                                              jCI,
                                                              (jboolean)false));                                                              (jboolean)false));
Line 6181 
Line 7503 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
 { {
    Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMInstance>*, jEnum);     Array<CIMInstance> *enm = DEBUG_ConvertJavaToC(
                                    jlong,
                                    Array<CIMInstance>*,
                                    jEnum);
  
    return DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance ((*enm)[pos]));     return DEBUG_ConvertCToJava(
                 CIMInstance*,
                 jlong,
                 new CIMInstance((*enm)[pos]));
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
   (JNIEnv *jEnv, jobject jThs, jlong jEnum)   (JNIEnv *jEnv, jobject jThs, jlong jEnum)
 { {
    Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMInstance>*, jEnum);     Array<CIMInstance> *enm = DEBUG_ConvertJavaToC(
                                    jlong,
                                    Array<CIMInstance>*,
                                    jEnum);
  
    return enm->size ();    return enm->size ();
 } }
Line 6208 
Line 7539 
 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance
   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)
 { {
    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jlong, WQLSelectStatement*, jWQLStmt);     WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
    CIMInstance        *ci       = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciInstance);                                        jlong,
                                         WQLSelectStatement*,
                                         jWQLStmt);
      CIMInstance        *ci       = DEBUG_ConvertJavaToC(
                                         jlong,
                                         CIMInstance*,
                                         jciInstance);
  
    if (  !wql_stmt    if (  !wql_stmt
       || !ci       || !ci
Line 6224 
Line 7561 
    }    }
    catch (const Exception &e)    catch (const Exception &e)
    {    {
       cerr << "Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance: Caught: " << e.getMessage () << endl;        cerr << "Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance: Caught: "
              << e.getMessage () << endl;
  
       return false;       return false;
    }    }
Line 6245 
Line 7583 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyInstance JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyInstance
   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)
 { {
    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jlong, WQLSelectStatement*, jWQLStmt);     WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
    CIMInstance        *ci       = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciInstance);                                        jlong,
                                         WQLSelectStatement*,
                                         jWQLStmt);
      CIMInstance        *ci       = DEBUG_ConvertJavaToC(
                                         jlong,
                                         CIMInstance*,
                                         jciInstance);
    CIMInstance        *ciRet    = 0;    CIMInstance        *ciRet    = 0;
  
    if (  !wql_stmt    if (  !wql_stmt
Line 6266 
Line 7610 
       }       }
       catch (const Exception &e)       catch (const Exception &e)
       {       {
          cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyInstance: Caught: " << e.getMessage () << endl;           cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyInstance:"
                        " Caught: "
                 << e.getMessage () << endl;
  
          return 0;          return 0;
       }       }
Line 6283 
Line 7629 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyClass JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyClass
   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciClass)   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciClass)
 { {
    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jlong, WQLSelectStatement*, jWQLStmt);     WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
    CIMClass           *cc       = DEBUG_ConvertJavaToC (jlong, CIMClass*, jciClass);                                        jlong,
                                         WQLSelectStatement*,
                                         jWQLStmt);
      CIMClass           *cc       = DEBUG_ConvertJavaToC(
                                         jlong,
                                         CIMClass*,
                                         jciClass);
    CIMClass           *ccRet    = NULL;    CIMClass           *ccRet    = NULL;
  
    if (!wql_stmt)    if (!wql_stmt)
Line 6302 
Line 7654 
       }       }
       catch (const Exception &e)       catch (const Exception &e)
       {       {
          cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyClass: Caught: " << e.getMessage () << endl;           cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyClass: Caught: "
                 << e.getMessage () << endl;
  
          return 0;          return 0;
       }       }
Line 6330 
Line 7683 
 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get
   (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jContainer, jstring jKey)   (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jContainer, jstring jKey)
 { {
    OperationContext *poc  = DEBUG_ConvertJavaToC (jlong, OperationContext*, jInst);     OperationContext *poc  = DEBUG_ConvertJavaToC(
                                   jlong,
                                   OperationContext*,
                                   jInst);
    jobject           jRet = 0;    jobject           jRet = 0;
  
    if (!poc)    if (!poc)
Line 6343 
Line 7699 
    String      container (pszContainer);    String      container (pszContainer);
    String      key       (pszKey);    String      key       (pszKey);
  
 ///printf ("container: %s\n", pszContainer);  
 ///printf ("key: %s\n", pszKey);  
   
    try {    try {
       if (container == "IdentityContainer")       if (container == "IdentityContainer")
       {       {
          IdentityContainer ic = poc->get (IdentityContainer::NAME);          IdentityContainer ic = poc->get (IdentityContainer::NAME);
   
 /////////printf ("ic\n");  
   
          if (key == "userName")          if (key == "userName")
          {          {
             String userName = ic.getUserName ();             String userName = ic.getUserName ();
   
 ////////////printf ("userName: %s\n", (const char*)userName.getCString ());  
   
             jRet = jEnv->NewStringUTF ((const char*)userName.getCString ());             jRet = jEnv->NewStringUTF ((const char*)userName.getCString ());
          }          }
       }       }
       else if (container == "SubscriptionInstanceContainer")       else if (container == "SubscriptionInstanceContainer")
       {       {
          SubscriptionInstanceContainer sic = poc->get (SubscriptionInstanceContainer::NAME);           SubscriptionInstanceContainer sic =
                poc->get(SubscriptionInstanceContainer::NAME);
  
          if (key == "subscriptionInstance")          if (key == "subscriptionInstance")
          {          {
             CIMInstance ci     = sic.getInstance ();             CIMInstance ci     = sic.getInstance ();
             jlong       jciRef = DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance (ci));              jlong       jciRef = DEBUG_ConvertCToJava(
                                        CIMInstance*,
                                        jlong,
                                        new CIMInstance (ci));
  
             jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef,             jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef,
                                     JMPIjvm::jv.CIMInstanceNewJ,                                     JMPIjvm::jv.CIMInstanceNewJ,
Line 6378 
Line 7729 
       }       }
       else if (container == "SubscriptionInstanceNamesContainer")       else if (container == "SubscriptionInstanceNamesContainer")
       {       {
          SubscriptionInstanceNamesContainer sinc = poc->get (SubscriptionInstanceNamesContainer::NAME);           SubscriptionInstanceNamesContainer sinc=
                poc->get (SubscriptionInstanceNamesContainer::NAME);
  
          if (key == "subscriptionInstanceNames")          if (key == "subscriptionInstanceNames")
          {          {
Line 6386 
Line 7738 
             jobjectArray         jcopa       = 0;             jobjectArray         jcopa       = 0;
             int                  jcopaLength = copa.size ();             int                  jcopaLength = copa.size ();
  
             jcopa = (jobjectArray)jEnv->NewObjectArray (jcopaLength,              jcopa = (jobjectArray)jEnv->NewObjectArray(
                           jcopaLength,
                                                         JMPIjvm::jv.CIMObjectPathClassRef,                                                         JMPIjvm::jv.CIMObjectPathClassRef,
                                                         0);                                                         0);
  
             for (int i = 0; i < jcopaLength; i++)             for (int i = 0; i < jcopaLength; i++)
             {             {
                jEnv->SetObjectArrayElement (jcopa,                 jEnv->SetObjectArrayElement(
                      jcopa,
                                             i,                                             i,
                                             jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,                     jEnv->NewObject(
                          JMPIjvm::jv.CIMObjectPathClassRef,
                                                              JMPIjvm::jv.CIMObjectPathNewJ,                                                              JMPIjvm::jv.CIMObjectPathNewJ,
                                                              new CIMObjectPath (copa[i])));                                                              new CIMObjectPath (copa[i])));
             }             }
Line 6404 
Line 7759 
       }       }
       else if (container == "SubscriptionFilterConditionContainer")       else if (container == "SubscriptionFilterConditionContainer")
       {       {
          SubscriptionFilterConditionContainer sfcc = poc->get (SubscriptionFilterConditionContainer::NAME);           SubscriptionFilterConditionContainer sfcc =
                poc->get (SubscriptionFilterConditionContainer::NAME);
 /////////printf ("sfcc\n");  
  
          if (key == "filterCondition")          if (key == "filterCondition")
          {          {
             String filterCondition = sfcc.getFilterCondition ();             String filterCondition = sfcc.getFilterCondition ();
  
 ////////////printf ("filterCondition: %s\n", (const char*)filterCondition.getCString ());  
   
             jRet = jEnv->NewStringUTF ((const char*)filterCondition.getCString ());             jRet = jEnv->NewStringUTF ((const char*)filterCondition.getCString ());
          }          }
          else if (key == "queryLanguage")          else if (key == "queryLanguage")
Line 6425 
Line 7777 
       }       }
       else if (container == "SubscriptionFilterQueryContainer")       else if (container == "SubscriptionFilterQueryContainer")
       {       {
          SubscriptionFilterQueryContainer sfqc = poc->get (SubscriptionFilterQueryContainer::NAME);           SubscriptionFilterQueryContainer sfqc =
                poc->get(SubscriptionFilterQueryContainer::NAME);
  
          if (key == "filterQuery")          if (key == "filterQuery")
          {          {
Line 6479 
Line 7832 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
 { {
    Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMObjectPath>*, jEnum);     Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC(
                                      jlong,
                                      Array<CIMObjectPath>*,
                                      jEnum);
  
    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, new CIMObjectPath ((*enm)[pos]));     return DEBUG_ConvertCToJava(
                 CIMObjectPath*,
                 jlong,
                 new CIMObjectPath((*enm)[pos]));
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
   (JNIEnv *jEnv, jobject jThs, jlong jEnum)   (JNIEnv *jEnv, jobject jThs, jlong jEnum)
 { {
    Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMObjectPath>*, jEnum);     Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC(
                                      jlong,
                                      Array<CIMObjectPath>*,
                                      jEnum);
  
    return enm->size ();    return enm->size ();
 } }
Line 6502 
Line 7864 
 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)   (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
 { {
    Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMQualifierDecl>*, jEnum);     Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC(
                                         jlong,
                                         Array<CIMQualifierDecl>*,
                                         jEnum);
  
    return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, new CIMQualifierDecl ((*enm)[pos]));     return DEBUG_ConvertCToJava(
                 CIMQualifierDecl*,
                 jlong,
                 new CIMQualifierDecl((*enm)[pos]));
 } }
  
 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
   (JNIEnv *jEnv, jobject jThs, jlong jEnum)   (JNIEnv *jEnv, jobject jThs, jlong jEnum)
 { {
    Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jlong, Array<CIMQualifierDecl>*, jEnum);     Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC(
                                         jlong,
                                         Array<CIMQualifierDecl>*,
                                         jEnum);
  
    return enm->size ();    return enm->size ();
 } }
Line 6530 
Line 7901 
 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_SelectExp__1finalize JNIEXPORT void JNICALL Java_org_pegasus_jmpi_SelectExp__1finalize
   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)
 { {
    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jlong, WQLSelectStatement*, jWQLStmt);     WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (
                                         jlong,
                                         WQLSelectStatement*,
                                         jWQLStmt);
  
    delete wql_stmt;    delete wql_stmt;
  
Line 6551 
Line 7925 
    String              query (pszQuery);    String              query (pszQuery);
  
    wql_stmt = new WQLSelectStatement (queryLanguage, query);    wql_stmt = new WQLSelectStatement (queryLanguage, query);
    DDD (PEGASUS_STD (cout)<<"--- Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = "<<PEGASUS_STD (hex)<< (long)wql_stmt<<PEGASUS_STD (dec)<<PEGASUS_STD (endl));  
      PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
          "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = %p",
          wql_stmt));
  
    try    try
    {    {
Line 6559 
Line 7936 
    }    }
    catch (const Exception &e)    catch (const Exception &e)
    {    {
       cerr << "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: " << e.getMessage () << endl;        PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
             "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: %s",
             (const char*)e.getMessage().getCString()));
    }    }
  
    jEnv->ReleaseStringUTFChars (jQuery, pszQuery);    jEnv->ReleaseStringUTFChars (jQuery, pszQuery);
Line 6575 
Line 7954 
 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_SelectExp__1getSelectString JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_SelectExp__1getSelectString
   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)
 { {
    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jlong, WQLSelectStatement*, jWQLStmt);     WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
                                         jlong,
                                         WQLSelectStatement*,
                                         jWQLStmt);
    String              cond;    String              cond;
  
    if (wql_stmt)    if (wql_stmt)
Line 6586 
Line 7968 
       }       }
       catch (const Exception &e)       catch (const Exception &e)
       {       {
          cerr << "Java_org_pegasus_jmpi_SelectExp__1getSelectString: Caught: " << e.getMessage () << endl;           cerr << "Java_org_pegasus_jmpi_SelectExp__1getSelectString: Caught: "
                 << e.getMessage () << endl;
  
          cond = "";          cond = "";
       }       }


Legend:
Removed from v.1.63  
changed lines
  Added in v.1.86

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2