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

   1 karl  1.34 //%2006////////////////////////////////////////////////////////////////////////
   2 schuur 1.1  //
   3 karl   1.10 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
   4             // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   5             // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   6 schuur 1.1  // IBM Corp.; EMC Corporation, The Open Group.
   7 karl   1.10 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   8             // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   9 karl   1.12 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  10             // EMC Corporation; VERITAS Software Corporation; The Open Group.
  11 karl   1.34 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  12             // EMC Corporation; Symantec Corporation; The Open Group.
  13 schuur 1.1  //
  14             // Permission is hereby granted, free of charge, to any person obtaining a copy
  15             // of this software and associated documentation files (the "Software"), to
  16             // deal in the Software without restriction, including without limitation the
  17             // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  18             // sell copies of the Software, and to permit persons to whom the Software is
  19             // furnished to do so, subject to the following conditions:
  20 mark.hamzy 1.36 //
  21 schuur     1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  22                 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  23                 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  24                 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  25                 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  26                 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  27                 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28                 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29                 //
  30                 //==============================================================================
  31                 //
  32                 // Author:      Adrian Schuur, schuur@de.ibm.com
  33                 //
  34                 // Modified By: Adrian Dutta
  35                 //              Andy Viciu
  36                 //              Magda Vacarelu
  37 david.dillard 1.15 //              David Dillard, VERITAS Software Corp.
  38                    //                  (david.dillard@veritas.com)
  39 mark.hamzy    1.24 //              Mark Hamzy,    hamzy@us.ibm.com
  40 schuur        1.1  //
  41                    //%/////////////////////////////////////////////////////////////////////////////
  42                    
  43                    
  44                    #include "JMPIImpl.h"
  45                    
  46 konrad.r      1.14 #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
  47                    #include <Pegasus/Common/DynamicLibrary.h>
  48                    #else
  49 schuur        1.1  #include <dlfcn.h>
  50 konrad.r      1.14 #endif
  51 schuur        1.1  #include <iostream>
  52 mark.hamzy    1.16 #include <sstream>
  53 schuur        1.1  
  54                    #include <Pegasus/Common/Config.h>
  55                    #include <Pegasus/Common/System.h>
  56                    #include <Pegasus/Common/CIMClass.h>
  57                    #include <Pegasus/Common/CIMInstance.h>
  58                    #include <Pegasus/Common/CIMObjectPath.h>
  59                    #include <Pegasus/Common/CIMProperty.h>
  60                    #include <Pegasus/Common/OperationContext.h>
  61                    #include <Pegasus/Provider/CIMOMHandle.h>
  62                    #include <Pegasus/Client/CIMClient.h>
  63 schuur        1.3  #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
  64 mark.hamzy    1.42 #include <Pegasus/WQL/WQLSelectStatement.h>
  65                    #include <Pegasus/WQL/WQLParser.h>
  66                    #define CALL_SIGN_WQL "WQL"
  67 schuur        1.1  
  68                    PEGASUS_USING_STD;
  69                    PEGASUS_NAMESPACE_BEGIN
  70                    
  71                    JavaVM *JMPIjvm::jvm=NULL;
  72                    JvmVector JMPIjvm::jv;
  73 schuur        1.2  int JMPIjvm::trace=0;
  74 schuur        1.1  
  75 mark.hamzy    1.26 #ifdef PEGASUS_DEBUG
  76 mark.hamzy    1.16 #define DDD(x) if (JMPIjvm::trace) x;
  77 mark.hamzy    1.26 #else
  78                    #define DDD(x)
  79                    #endif
  80 mark.hamzy    1.16 
  81 mark.hamzy    1.20 #include "Convert.h"
  82                    
  83 mark.hamzy    1.17 JMPIjvm::ClassTable  JMPIjvm::_classTable;
  84                    JMPIjvm::ObjectTable JMPIjvm::_objectTable;
  85                    
  86 schuur        1.1  const char* classNames[]={
  87 mark.hamzy    1.26 /*00*/ "java/util/Vector" ,
  88                    /*01*/ "java/lang/Boolean",
  89                    /*02*/ "java/lang/Byte",
  90                    /*03*/ "java/lang/Short",
  91                    /*04*/ "java/lang/Integer",
  92                    /*05*/ "java/lang/Long",
  93                    /*06*/ "java/lang/Float",
  94                    /*07*/ "java/lang/Double",
  95                    /*08*/ "org/pegasus/jmpi/UnsignedInt8",
  96                    /*09*/ "org/pegasus/jmpi/UnsignedInt16",
  97                    /*10*/ "org/pegasus/jmpi/UnsignedInt32",
  98                    /*11*/ "org/pegasus/jmpi/UnsignedInt64",
  99                    /*12*/ "org/pegasus/jmpi/CIMObjectPath",
 100                    /*13*/ "org/pegasus/jmpi/CIMException",
 101                    /*14*/ "java/math/BigInteger",
 102                    /*15*/ "org/pegasus/jmpi/CIMProperty",
 103                    /*16*/ "org/pegasus/jmpi/CIMOMHandle",
 104                    /*17*/ "org/pegasus/jmpi/CIMClass",
 105                    /*18*/ "org/pegasus/jmpi/CIMInstance",
 106                    /*19*/ "org/pegasus/jmpi/CIMValue",
 107                    /*20*/ "java/lang/Object",
 108 mark.hamzy    1.26 /*21*/ "java/lang/Throwable",
 109                    /*22*/ "java/lang/String",
 110                    /*23*/ "org/pegasus/jmpi/JarClassLoader",
 111                    /*24*/ "org/pegasus/jmpi/CIMDateTime",
 112                    /*25*/ "org/pegasus/jmpi/SelectExp",
 113                    /*26*/ "org/pegasus/jmpi/CIMQualifier",
 114                    /*27*/ "org/pegasus/jmpi/CIMQualifierType",
 115                    /*28*/ "org/pegasus/jmpi/CIMFlavor",
 116                    /*29*/ "org/pegasus/jmpi/CIMArgument",
 117                    /*30*/ "org/pegasus/jmpi/CIMInstanceException",
 118 mark.hamzy    1.35 /*31*/ "org/pegasus/jmpi/CIMObject",
 119                    /*32*/ "java/lang/Character",
 120 mark.hamzy    1.36 /*33*/ "org/pegasus/jmpi/OperationContext",
 121                    /*34*/ "java/lang/Class",
 122 schuur        1.1  };
 123                    
 124                    const METHOD_STRUCT instanceMethodNames[]={
 125 mark.hamzy    1.36 /*00 VectorNew                   */ { /*Vector           */ 0, "<init>",          "()V" },
 126                    /*01 BooleanNewZ                 */ { /*Boolean          */ 1, "<init>",          "(Z)V" },
 127                    /*02 ByteNewB                    */ { /*Byte             */ 2, "<init>",          "(B)V" },
 128                    /*03 ShortNewS                   */ { /*Short            */ 3, "<init>",          "(S)V" },
 129                    /*04 IntegerNewI                 */ { /*Integer          */ 4, "<init>",          "(I)V" },
 130                    /*05 LongNewJ                    */ { /*Long             */ 5, "<init>",          "(J)V" },
 131                    /*06 FloatNewF                   */ { /*Float            */ 6, "<init>",          "(F)V" },
 132                    /*07 DoubleNewD                  */ { /*Double           */ 7, "<init>",          "(D)V" },
 133                    /*08 UnsignedInt8NewS            */ { /*UnsignedInt8     */ 8, "<init>",          "(S)V" },
 134                    /*09 UnsignedInt16NewI           */ { /*UnsignedInt16    */ 9, "<init>",          "(I)V" },
 135                    /*10 UnsignedInt32NewJ           */ { /*UnsignedInt32    */10, "<init>",          "(J)V" },
 136                    /*11 UnsignedInt64NewBi          */ { /*UnsignedInt64    */11, "<init>",          "(Ljava/math/BigInteger;)V" },
 137                    /*12 CIMObjectPathNewI           */ { /*CIMObjectPath    */12, "<init>",          "(I)V" },
 138                    /*13 CIMExceptionNewSt           */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;)V" },
 139                    /*14 CIMPropertyNewI             */ { /*CIMProperty      */15, "<init>",          "(I)V" },
 140                    /*15 VectorAddElement            */ { /*Vector           */ 0, "addElement",      "(Ljava/lang/Object;)V" },
 141                    /*16 VectorElementAt             */ { /*Vector           */ 0, "elementAt",       "(I)Ljava/lang/Object;" },
 142                    /*17 CIMOMHandleNewISt           */ { /*CIMOMHandle      */16, "<init>",          "(ILjava/lang/String;)V" },
 143                    /*18 CIMExceptionNewI            */ { /*CIMException     */13, "<init>",          "(I)V" },
 144                    /*19 CIMClassNewI                */ { /*CIMClass         */17, "<init>",          "(I)V" },
 145                    /*20 CIMInstanceNewI             */ { /*CIMInstance      */18, "<init>",          "(I)V" },
 146 mark.hamzy    1.36 /*21 CIMObjectPathCInst          */ { /*CIMObjectPath    */12, "cInst",           "()I" },
 147                    /*22 CIMInstanceCInst            */ { /*CIMInstance      */18, "cInst",           "()I" },
 148                    /*23 CIMClassCInst               */ { /*CIMClass         */17, "cInst",           "()I" },
 149                    /*24 ObjectToString              */ { /*Object           */20, "toString",        "()Ljava/lang/String;" },
 150                    /*25 ThrowableGetMessage         */ { /*Throwable        */21, "getMessage",      "()Ljava/lang/String;" },
 151                    /*26 CIMExceptionGetID           */ { /*CIMException     */13, "getID",           "()Ljava/lang/String;" },
 152                    /*27 VectorSize                  */ { /*Vector           */ 0, "size",            "()I" },
 153                    /*28 CIMPropertyCInst            */ { /*CIMProperty      */15, "cInst",           "()I" },
 154                    /*29 CIMOMHandleGetClass         */ { /*CIMOMHandle      */16, "getClass",        "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 155                    /*30 VectorRemoveElementAt       */ { /*Vector           */ 0, "removeElementAt", "(I)V" },
 156                    /*31 CIMValueCInst               */ { /*CIMValue         */19, "cInst",           "()I" },
 157                    /*32 CIMExceptionNewISt          */ { /*CIMException     */13, "<init>",          "(ILjava/lang/String;)V" },
 158                    /*33 CIMExceptionGetCode         */ { /*CIMException     */13, "getCode",         "()I" },
 159                    /*34 CIMDateTimeNewI             */ { /*CIMDateTime      */24, "<init>",          "(I)V" },
 160                    /*35 SelectExpNewI               */ { /*SelectExp        */25, "<init>",          "(I)V" },
 161                    /*36 CIMQualifierNewI            */ { /*CIMQualifier     */26, "<init>",          "(I)V" },
 162                    /*37 CIMFlavorNewI               */ { /*CIMFlavor        */28, "<init>",          "(I)V" },
 163                    /*38 CIMFlavorGetFlavor          */ { /*CIMFlavor        */28, "getFlavor",       "()I" },
 164                    /*39 CIMArgumentCInst            */ { /*CIMArgument      */29, "cInst",           "()I" },
 165                    /*40 CIMArgumentNewI             */ { /*CIMArgument      */29, "<init>",          "(I)V" },
 166                    /*41 CIMExceptionNew             */ { /*CIMException     */13, "<init>",          "()V" },
 167 mark.hamzy    1.36 /*42 CIMExceptionNewStOb         */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;)V" },
 168                    /*43 CIMExceptionNewStObOb       */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
 169                    /*44 CIMExceptionNewStObObOb     */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },
 170                    /*45 CIMValueNewI                */ { /*CIMValue         */19, "<init>",          "(I)V" },
 171                    /*46 CIMObjectNewIZ              */ { /*CIMObject        */31, "<init>",          "(IZ)V" },
 172                    /*47 CharacterNewC               */ { /*Character        */32, "<init>",          "(C)V" },
 173                    /*48 OperationContextNewI        */ { /*OperationContext */33, "<init>",          "(I)V" },
 174                    /*49 OperationContextUnassociate */ { /*OperationContext */33, "unassociate",     "()V" },
 175                    /*50 ClassGetInterfaces          */ { /*Class            */34, "getInterfaces",   "()[Ljava/lang/Class;" },
 176                    /*51 ClassGetName                */ { /*Class            */34, "getName",         "()Ljava/lang/String;" },
 177 schuur        1.1  };
 178                    
 179                    const METHOD_STRUCT staticMethodNames[]={
 180 mark.hamzy    1.26 /*00*/ { 14, "valueOf",         "(J)Ljava/math/BigInteger;" },
 181                    /*01*/ { 23, "load",            "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 182 schuur        1.1  };
 183                    
 184                    static int methodInitDone=0;
 185                    
 186 mark.hamzy    1.26 jclass    classRefs[sizeof(classNames)/sizeof(classNames[0])];
 187                    jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])];
 188                    jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(staticMethodNames[0])];
 189 mark.hamzy    1.20 
 190 mark.hamzy    1.26 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name)
 191                    {
 192 schuur        1.1    jclass localRefCls=env->FindClass(name);
 193 mark.hamzy    1.16 
 194                      if (localRefCls==NULL)
 195                         return JNI_FALSE;
 196                    
 197 schuur        1.1    jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
 198 mark.hamzy    1.16 
 199 mark.hamzy    1.28 #if 0
 200                      jmethodID   jmidToString   = env->GetMethodID(globalRefCls, "toString", "()Ljava/lang/String;");
 201                      jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls, jmidToString);
 202                      const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
 203                    
 204                      DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<", pszResult = "<<pszResult<<PEGASUS_STD(endl));
 205                    
 206                      env->ReleaseStringUTFChars (jstringResult, pszResult);
 207                    #else
 208                      DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));
 209                    #endif
 210                    
 211 schuur        1.1    env->DeleteLocalRef(localRefCls);
 212 mark.hamzy    1.16 
 213 schuur        1.1    return globalRefCls;
 214                    }
 215                    
 216 mark.hamzy    1.26 JMPIjvm::JMPIjvm()
 217                    {
 218 mark.hamzy    1.32    initJVM ();
 219 schuur        1.1  }
 220                    
 221 mark.hamzy    1.26 JMPIjvm::~JMPIjvm()
 222                    {
 223 schuur        1.1  }
 224                    
 225 mark.hamzy    1.26 int JMPIjvm::cacheIDs(JNIEnv *env)
 226                    {
 227 mark.hamzy    1.16    if (methodInitDone==1)
 228                          return JNI_TRUE;
 229                       if (methodInitDone==-1)
 230                          return JNI_FALSE;
 231 schuur        1.1  
 232 mark.hamzy    1.41    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));
 233                    
 234 schuur        1.1     methodInitDone=-1;
 235 mark.hamzy    1.16 
 236 mark.hamzy    1.26    for (unsigned i=0; i<(sizeof(classNames)/sizeof(classNames[0])); i++) {
 237 mark.hamzy    1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl));
 238                          if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)
 239                          {
 240                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error: Count not find global class ref for "<<classNames[i]<<PEGASUS_STD(endl));
 241                    
 242                             return JNI_FALSE;
 243                          }
 244 schuur        1.1     }
 245 schuur        1.7  
 246 mark.hamzy    1.26    for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])); j++) {
 247 mark.hamzy    1.28 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<": "<<instanceMethodNames[j].signature<<PEGASUS_STD(endl));
 248 mark.hamzy    1.16       if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],
 249 mark.hamzy    1.28                                                  instanceMethodNames[j].methodName,
 250                                                                     instanceMethodNames[j].signature))==NULL)
 251 mark.hamzy    1.16       {
 252                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
 253 schuur        1.1           return 0;
 254 mark.hamzy    1.17       }
 255 mark.hamzy    1.16    }
 256 schuur        1.1  
 257 mark.hamzy    1.26    for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(staticMethodNames[0])); k++) {
 258 mark.hamzy    1.28 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<": "<<staticMethodNames[k].signature<<PEGASUS_STD(endl));
 259 mark.hamzy    1.16       if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],
 260 mark.hamzy    1.28                                                      staticMethodNames[k].methodName,
 261                                                                         staticMethodNames[k].signature))==NULL)
 262 mark.hamzy    1.16       {
 263                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
 264                             return 0;
 265                          }
 266                       }
 267                    
 268                       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));
 269                    
 270 mark.hamzy    1.30    jv.env=env;
 271                       jv.classRefs=classRefs;
 272                       jv.instMethodIDs=instanceMethodIDs;
 273                       jv.staticMethodIDs=staticMethodIDs;
 274                       jv.instanceMethodNames=instanceMethodNames;
 275                    
 276 schuur        1.1     methodInitDone=1;
 277 mark.hamzy    1.16 
 278 schuur        1.1     return JNI_TRUE;
 279                    }
 280                    
 281 mark.hamzy    1.26 static void throwCIMException(JNIEnv *env,char *e)
 282                    {
 283 mark.hamzy    1.30    JMPIjvm::cacheIDs(env);
 284                    
 285 mark.hamzy    1.26    env->ThrowNew(JMPIjvm::jv.CIMExceptionClassRef,e);
 286 schuur        1.1  }
 287                    
 288 schuur        1.3  int JMPIjvm::destroyJVM()
 289                    {
 290 mark.hamzy    1.16    DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<<PEGASUS_STD(endl));
 291                    
 292 mark.hamzy    1.26 #ifdef JAVA_DESTROY_VM_WORKS
 293 schuur        1.3     if (jvm!=NULL) {
 294                          JvmVector *jv;
 295 mark.hamzy    1.26 
 296 schuur        1.3        attachThread(&jv);
 297 mark.hamzy    1.32 
 298 schuur        1.3        jvm->DestroyJavaVM();
 299 mark.hamzy    1.26 
 300                          jvm = NULL;
 301                    
 302 schuur        1.3        return 0;
 303                       }
 304 mark.hamzy    1.26 #endif
 305 mark.hamzy    1.16 
 306 schuur        1.3     return -1;
 307                    }
 308                    
 309 mark.hamzy    1.32 Mutex JMPIjvm::_initMutex;
 310                    
 311                    int JMPIjvm::initJVM ()
 312 schuur        1.1  {
 313 mark.hamzy    1.32    AutoMutex lock (_initMutex);
 314                    
 315                       if (jvm != NULL)
 316                       {
 317                          return 0;
 318                       }
 319                    
 320 schuur        1.1     JavaVMInitArgs vm_args;
 321                       jint res;
 322 mark.hamzy    1.16    char *envstring;
 323 schuur        1.1     JNIEnv *env;
 324 mark.hamzy    1.16    JavaVMOption *poptions = 0;
 325                       int maxoption = 0;
 326 mark.hamzy    1.29    typedef struct _JVMOptions {
 327                          const char *pszEnvName;
 328                          const char *pszPrefix;
 329                          bool        fSplit;
 330                       } JVMOPTIONS;
 331 mark.hamzy    1.16    Array<std::string> JNIoptions;
 332 mark.hamzy    1.29    static JVMOPTIONS aEnvOptions[] = {
 333                          { "CLASSPATH",                           "-Djava.class.path=", false },
 334                          { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx"              , false },
 335                          { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms"              , false },
 336                          { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss"              , false },
 337                          { "PEGASUS_JMPI_VERBOSE",                "-verbose:"         , true  }
 338 mark.hamzy    1.16    };
 339                       std::ostringstream oss;
 340 schuur        1.9  
 341                    #ifdef PEGASUS_DEBUG
 342 mark.hamzy    1.16    if (getenv("PEGASUS_JMPI_TRACE")) JMPIjvm::trace=1;
 343                       else JMPIjvm::trace=0;
 344 schuur        1.9  #else
 345 mark.hamzy    1.16    JMPIjvm::trace=0;
 346 schuur        1.9  #endif
 347 schuur        1.2  
 348 mark.hamzy    1.16    DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl));
 349                    
 350 schuur        1.1     jv.initRc=0;
 351                    
 352 mark.hamzy    1.16    envstring=getenv("CLASSPATH");
 353                       if (envstring==NULL) {
 354                          jv.initRc=1;
 355                    
 356                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl));
 357                    
 358                          return -1;
 359                       }
 360                    
 361 mark.hamzy    1.20 ///JNIoptions.append ("-Djava.compiler=NONE");
 362                    ///maxoption++;
 363                    
 364 mark.hamzy    1.29    for (Uint32 i = 0; i < (int)(sizeof (aEnvOptions)/sizeof (aEnvOptions[0])); i++)
 365 mark.hamzy    1.16    {
 366 mark.hamzy    1.29       JVMOPTIONS *pEnvOption = &aEnvOptions[i];
 367 mark.hamzy    1.16 
 368 mark.hamzy    1.29       envstring = getenv (pEnvOption->pszEnvName);
 369 mark.hamzy    1.16       if (envstring)
 370                          {
 371 mark.hamzy    1.29          if (pEnvOption->fSplit)
 372                             {
 373                                bool              fCommaFound  = true;
 374                                string            stringValues = envstring;
 375                                string::size_type posStart     = 0;
 376                                string::size_type posEnd       = stringValues.length () - 1;
 377                    
 378                                while (fCommaFound)
 379                                {
 380                                   string            stringValue;
 381                                   string::size_type posComma    = stringValues.find (',', posStart);
 382                    
 383                                   if (posComma != string::npos)
 384                                   {
 385                                      fCommaFound = true;
 386                                      stringValue = stringValues.substr (posStart, posComma);
 387                                      posStart    = posComma + 1;
 388                                   }
 389                                   else
 390                                   {
 391                                      fCommaFound = false;
 392 mark.hamzy    1.29                   stringValue = stringValues.substr (posStart, posEnd - posStart + 1);
 393                                   }
 394                    
 395                                   DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): fCommaFound = " << fCommaFound << ", posStart = " << posStart << ", posComma = " << posComma << ", posEnd = " << posEnd << "" << PEGASUS_STD(endl));
 396                    
 397                                   maxoption++;
 398                    
 399                                   oss.str ("");
 400                                   oss << pEnvOption->pszPrefix << stringValue;
 401                    
 402                                   JNIoptions.append (oss.str ());
 403                    
 404                                   DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
 405                                }
 406                             }
 407                             else
 408                             {
 409                                maxoption++;
 410 mark.hamzy    1.16 
 411 mark.hamzy    1.29             oss.str ("");
 412                                oss << pEnvOption->pszPrefix << envstring;
 413 mark.hamzy    1.16 
 414 mark.hamzy    1.29             JNIoptions.append (oss.str ());
 415 mark.hamzy    1.16 
 416 mark.hamzy    1.29             DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
 417                             }
 418 mark.hamzy    1.16       }
 419                       }
 420                    
 421                       poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption));
 422                       if (!poptions)
 423                       {
 424 schuur        1.1        jv.initRc=1;
 425 mark.hamzy    1.16 
 426                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl));
 427                    
 428 schuur        1.1        return -1;
 429                       }
 430                    
 431 mark.hamzy    1.16    for (Uint32 i=0; i < JNIoptions.size(); i++)
 432                       {
 433                          poptions[i].optionString = (char *)JNIoptions[i].c_str ();
 434                    
 435                          DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));
 436                       }
 437                    
 438 mark.hamzy    1.29    vm_args.version=JNI_VERSION_1_2;
 439 mark.hamzy    1.16    vm_args.options=poptions;
 440                       vm_args.nOptions=maxoption;
 441 schuur        1.1     vm_args.ignoreUnrecognized=JNI_TRUE;
 442                    
 443                       res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 444 mark.hamzy    1.16 
 445                       if (poptions)
 446                       {
 447                          free (poptions);
 448                       }
 449                    
 450 schuur        1.1     if (res!=0) {
 451 mark.hamzy    1.32       jv.initRc=1;
 452                    
 453 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));
 454                    
 455 mark.hamzy    1.32       return -1;
 456 schuur        1.1     }
 457                    
 458 mark.hamzy    1.30    cacheIDs(env);
 459 schuur        1.1  
 460                       if (env->ExceptionOccurred()) {
 461 mark.hamzy    1.32       jv.initRc=1;
 462                    
 463 schuur        1.1        env->ExceptionDescribe();
 464 mark.hamzy    1.32 
 465                    #ifdef JAVA_DESTROY_VM_WORKS
 466                    
 467                          JvmVector *jv = NULL;
 468                    
 469                          attachThread (&jv);
 470                    
 471                          jvm->DestroyJavaVM ();
 472                    
 473                          jvm = NULL;
 474                    #endif
 475                    
 476                          return -1;
 477 schuur        1.1     }
 478                    
 479 mark.hamzy    1.32    jv.initRc=1;
 480                       jv.jvm=jvm;
 481                    
 482 schuur        1.1     return res;
 483                    }
 484                    
 485 mark.hamzy    1.32 JNIEnv* JMPIjvm::attachThread(JvmVector **jvp)
 486                    {
 487                       JNIEnv* env = NULL;
 488                    
 489                       if (jvm == NULL)
 490                       {
 491                          initJVM ();
 492                    
 493                          if (jvm == NULL)
 494                             return NULL;
 495                       }
 496                    
 497                       jvm->AttachCurrentThread ((void**)&env,NULL);
 498                    
 499 schuur        1.1     *jvp=&jv;
 500 mark.hamzy    1.32 
 501 schuur        1.1     return env;
 502                    }
 503                    
 504 mark.hamzy    1.26 void JMPIjvm::detachThread()
 505                    {
 506 schuur        1.1     jvm->DetachCurrentThread();
 507                    }
 508                    
 509                    jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
 510                         const char *cn, jclass *cls)
 511                    {
 512 mark.hamzy    1.17    jobject gProv=NULL;
 513                       jclass scls=NULL;
 514 mark.hamzy    1.16 
 515 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jar = "<<jar<<", cln = "<<cln<<", cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 516 mark.hamzy    1.17 
 517                       _objectTable.lookup(cln,gProv);
 518                       _classTable.lookup(cln,scls);
 519 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 520 mark.hamzy    1.16 
 521 schuur        1.1     if (gProv) {
 522                          *cls=scls;
 523                          return gProv;
 524                       }
 525                    
 526                       /*
 527 mark.hamzy    1.16    DDD(PEGASUS_STD(cout)<<"--- jar: "<<jar<<PEGASUS_STD(endl));
 528                       DDD(PEGASUS_STD(cout)<<"--- cln: "<<cln<<PEGASUS_STD(endl));
 529 schuur        1.1  
 530                       jstring jjar=env->NewStringUTF((const char*)jar.getCString());
 531                       jstring jcln=env->NewStringUTF((const char*)cln.getCString());
 532                    
 533 mark.hamzy    1.26    jclass jcls=(jclass)env->CallStaticObjectMethod(JMPIjvm::jv.JarClassLoaderRef,jv.JarClassLoaderLoad,
 534 schuur        1.1        jjar,jcln);
 535                       if (env->ExceptionCheck()) {
 536                          env->ExceptionDescribe();
 537 mark.hamzy    1.16       PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl);
 538                    ////////return NULL;
 539 schuur        1.1     }
 540                    */
 541                    
 542                       scls=getGlobalClassRef(env,(const char*)cln.getCString());
 543                       if (env->ExceptionCheck()) {
 544 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 545 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 546                    
 547 schuur        1.1        return NULL;
 548                       }
 549 mark.hamzy    1.17    *cls=scls;
 550                    
 551                       if (scls)
 552                       {
 553 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 554 mark.hamzy    1.17       _classTable.insert(cln,scls);
 555                       }
 556 schuur        1.1  
 557                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 558                       jobject lProv=env->NewObject(*cls,id);
 559                       gProv=(jobject)env->NewGlobalRef(lProv);
 560                       if (env->ExceptionCheck()) {
 561 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 562 schuur        1.1        return NULL;
 563                       }
 564 mark.hamzy    1.17 
 565                       if (gProv)
 566                       {
 567 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 568 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 569                       }
 570                    
 571 schuur        1.1     return gProv;
 572                    }
 573                    
 574                    jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
 575                    {
 576 mark.hamzy    1.17    String cln = cn;
 577                       jobject gProv=NULL;
 578                       jclass scls=NULL;
 579 mark.hamzy    1.16 
 580 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 581 mark.hamzy    1.17 
 582                       _objectTable.lookup(cln,gProv);
 583                       _classTable.lookup(cln,scls);
 584 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 585 mark.hamzy    1.16 
 586 schuur        1.1     if (gProv) {
 587                          *cls=scls;
 588                          return gProv;
 589                       }
 590                    
 591                       scls=getGlobalClassRef(env,cn);
 592                       if (env->ExceptionCheck()) {
 593 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 594 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 595                    
 596 schuur        1.1        return NULL;
 597                       }
 598 mark.hamzy    1.17    *cls=scls;
 599                    
 600                       if (scls)
 601                       {
 602 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 603 mark.hamzy    1.17       _classTable.insert(cln,scls);
 604                       }
 605 schuur        1.1  
 606                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 607                       jobject lProv=env->NewObject(*cls,id);
 608                       gProv=(jobject)env->NewGlobalRef(lProv);
 609                       if (env->ExceptionCheck()) {
 610 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 611 schuur        1.1        return NULL;
 612                       }
 613 mark.hamzy    1.17 
 614                       if (gProv)
 615                       {
 616 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 617 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 618                       }
 619                    
 620 schuur        1.1     return gProv;
 621                    }
 622                    
 623                    void JMPIjvm::checkException(JNIEnv *env)
 624                    {
 625                       if (env->ExceptionCheck()) {
 626 schuur        1.7        jstring jMsg=NULL,jId=NULL;
 627                          int code;
 628                          const char *cp;
 629                          String msg=String::EMPTY,id=String::EMPTY;
 630                    
 631 schuur        1.1        jthrowable err=env->ExceptionOccurred();
 632 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 633 schuur        1.7        if (env->IsInstanceOf(err,JMPIjvm::jv.CIMExceptionClassRef)) {
 634                             env->ExceptionClear();
 635                             if (err) {
 636                                jMsg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
 637                                code=(int)env->CallIntMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
 638                                jId=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
 639                                if (jId) {
 640                                   cp=env->GetStringUTFChars(jId,NULL);
 641                                   id=String(cp);
 642                                   env->ReleaseStringUTFChars(jId,cp);
 643                                }
 644                    
 645                                if (jMsg) {
 646                                   cp=env->GetStringUTFChars(jMsg,NULL);
 647                                   msg=String(cp);
 648                                   env->ReleaseStringUTFChars(jMsg,cp);
 649                                }
 650 mark.hamzy    1.16 
 651                                DDD(PEGASUS_STD(cerr)<<"--- throwing Pegasus exception: "<<code<<" "<<id<<" ("<<msg<<")"<<PEGASUS_STD(endl));
 652                    
 653 schuur        1.7              throw CIMException((CIMStatusCode)code,id+" ("+msg+")");
 654 mark.hamzy    1.17          }
 655 schuur        1.7        }
 656                          else {
 657 mark.hamzy    1.28          DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::checkException: exiting..."<<PEGASUS_STD(endl));
 658 schuur        1.7           env->ExceptionDescribe();
 659                             exit(13);
 660 schuur        1.1        }
 661 mark.hamzy    1.28    }
 662 schuur        1.2  }
 663 schuur        1.1  
 664                    /**************************************************************************
 665                     * name         - NewPlatformString
 666                     * description  - Returns a new Java string object for the specified
 667                     *                platform string.
 668                     * parameters   - env
 669                     *                s     Platform encoded string
 670                     * returns      - Java string object pointer or null (0)
 671                     **************************************************************************/
 672                    jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
 673                    {
 674                        size_t len = strlen(s);
 675                        jclass cls;
 676                        jmethodID mid;
 677                        jbyteArray ary;
 678                    
 679                        NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
 680                        NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
 681                        ary = (*env).NewByteArray((jsize)len);
 682                        if (ary != 0) {
 683                            jstring str = 0;
 684 schuur        1.1          (*env).SetByteArrayRegion(ary, 0, (jsize)len,
 685                                                       (jbyte *)s);
 686                            if (!(*env).ExceptionOccurred()) {
 687                                str = (jstring)(*env).NewObject(cls, mid, ary);
 688                            }
 689                            (*env).DeleteLocalRef(ary);
 690                            return str;
 691                        }
 692                        return 0;
 693                    }
 694                    
 695                    
 696                    /**************************************************************************
 697                     * name         - NewPlatformStringArray
 698                     * description  - Returns a new array of Java string objects for the specified
 699                     *                array of platform strings.
 700                     * parameters   - env
 701                     *                strv      Platform encoded string array
 702                     *                strc      Number of strings in strv
 703                     * returns      - Java string array object pointer
 704                     **************************************************************************/
 705 schuur        1.1  jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
 706                    {
 707                        jarray cls;
 708                        jarray ary;
 709                        int i;
 710                    
 711                        NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
 712                        NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
 713                        for (i = 0; i < strc; i++) {
 714                            jstring str = NewPlatformString(env, *strv++);
 715                            NULL_CHECK0(str);
 716                            (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
 717                            (*env).DeleteLocalRef(str);
 718                        }
 719                        return (jobjectArray)ary;
 720                    }
 721                    
 722                    
 723                    
 724 mark.hamzy    1.33 CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) {
 725                       CIMPropertyList pl;
 726                    
 727                       if (l) {
 728                          Array<CIMName> n;
 729                    
 730                          for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {
 731                             jstring     jObj = (jstring)jEnv->GetObjectArrayElement(l,i);
 732                             const char *pn   = jEnv->GetStringUTFChars(jObj,NULL);
 733                    
 734                             n.append(pn);
 735                    
 736                             jEnv->ReleaseStringUTFChars(jObj,pn);
 737                          }
 738                    
 739                          pl.set(n);
 740                       }
 741                    
 742                       return pl;
 743                    }
 744                    
 745 schuur        1.1  
 746                    
 747                    extern "C" {
 748                    
 749                    
 750                    void throwCimException(JNIEnv *jEnv, CIMException & e) {
 751                          JMPIjvm::cacheIDs(jEnv);
 752 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,(jint)e.getCode());
 753 schuur        1.1        jEnv->Throw((jthrowable)ev);
 754                    }
 755                    
 756                    void throwFailedException(JNIEnv *jEnv) {
 757                          JMPIjvm::cacheIDs(jEnv);
 758 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,1);
 759 schuur        1.1        jEnv->Throw((jthrowable)ev);
 760                    }
 761                    
 762                    void throwNotSupportedException(JNIEnv *jEnv) {
 763                          JMPIjvm::cacheIDs(jEnv);
 764 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,7);
 765 schuur        1.1        jEnv->Throw((jthrowable)ev);
 766                    }
 767                    
 768                    
 769 schuur        1.7  
 770                    
 771                    // -------------------------------------
 772                    // ---
 773                    // -		CIMException
 774                    // ---
 775                    // -------------------------------------
 776                    
 777                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new
 778                      (JNIEnv *jEnv, jobject jThs) {
 779 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 780 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNew);
 781 schuur        1.7  }
 782                    
 783                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS
 784                      (JNIEnv *jEnv, jobject jThs, jstring jM) {
 785 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 786 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewSt,jM);
 787 schuur        1.7  }
 788                    
 789                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO
 790                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {
 791 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 792 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStOb,jM,jO1);
 793 schuur        1.7  }
 794                    
 795                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO
 796                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {
 797 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 798 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObOb,jM,jO1,jO2);
 799 schuur        1.7  }
 800                    
 801                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO
 802                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {
 803 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 804 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObObOb,jM,jO1,jO2,jO3);
 805 schuur        1.7  }
 806                    
 807                    
 808                    
 809 schuur        1.1  // -------------------------------------
 810                    // ---
 811                    // -		CIMOMHandle
 812                    // ---
 813                    // -------------------------------------
 814                    
 815                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
 816 schuur        1.7    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo,
 817 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
 818                    {
 819                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 820                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 821                       CIMPropertyList   pl;
 822                       OperationContext  ctx;
 823                    
 824                       if (jPl)
 825                          pl=getList(jEnv,jPl);
 826                       else
 827                          pl=CIMPropertyList();
 828                    
 829 schuur        1.1     try {
 830 mark.hamzy    1.20       CIMClass cls=ch->getClass(ctx,cop->getNameSpace(),
 831                                                    cop->getClassName(),
 832                                                    (Boolean)lo,
 833                                                    (Boolean)iq,
 834                                                    (Boolean)ic,
 835                                                    pl);
 836                    
 837                          return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
 838 schuur        1.1     }
 839                       Catch(jEnv);
 840 mark.hamzy    1.20 
 841 schuur        1.1     return 0;
 842                    }
 843                    
 844 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass
 845 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 846 mark.hamzy    1.20 {
 847                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 848                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 849 mark.hamzy    1.22    CIMClass         *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 850 mark.hamzy    1.20    OperationContext  ctx;
 851                    
 852 schuur        1.7     try {
 853                          ch->createClass(ctx,cop->getNameSpace(),*cl);
 854                       }
 855                       Catch(jEnv);
 856                    }
 857                    
 858                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass
 859 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 860                    {
 861                       CIMOMHandle     *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 862                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 863                       CIMClass        *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 864 schuur        1.7     OperationContext ctx;
 865 mark.hamzy    1.20 
 866 schuur        1.7     try {
 867                         ch->modifyClass(ctx,cop->getNameSpace(),*cl);
 868                       }
 869                       Catch(jEnv);
 870                    }
 871                    
 872                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass
 873 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 874                    {
 875                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 876                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 877                       OperationContext  ctx;
 878 schuur        1.7  
 879                       try {
 880                          ch->deleteClass(ctx,cop->getNameSpace(),cop->getClassName());
 881                       }
 882                       Catch(jEnv);
 883                    }
 884                    
 885                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames
 886 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
 887                    {
 888                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 889                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 890                       CIMNamespaceName  ns  = cop->getNameSpace();
 891                       OperationContext  ctx;
 892                    
 893 schuur        1.7     try {
 894 mark.hamzy    1.33       Array<CIMName>        enm   = ch->enumerateClassNames(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)deep);
 895 mark.hamzy    1.20       Array<CIMObjectPath> *enmop = new Array<CIMObjectPath>();
 896                    
 897 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
 898                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
 899                          }
 900 mark.hamzy    1.20 
 901                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
 902 schuur        1.7     }
 903                       Catch(jEnv);
 904 mark.hamzy    1.20 
 905 schuur        1.7     return 0;
 906                    }
 907                    
 908                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses
 909                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
 910 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic)
 911                    {
 912                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 913                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 914                       OperationContext  ctx;
 915                    
 916 schuur        1.1     try {
 917 mark.hamzy    1.20       Array<CIMClass> en=ch->enumerateClasses(ctx,
 918                                                                  cop->getNameSpace(),
 919                                                                  cop->getClassName(),
 920 mark.hamzy    1.33                                               (Boolean)deep,
 921 mark.hamzy    1.20                                               (Boolean)lo,
 922 mark.hamzy    1.33                                               (Boolean)iq,
 923                                                                  (Boolean)ic);
 924 mark.hamzy    1.20 
 925                          return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(en));
 926 schuur        1.7     }
 927                       Catch(jEnv);
 928 mark.hamzy    1.20 
 929 schuur        1.7     return 0;
 930                    }
 931                    
 932                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
 933                       (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic,
 934 mark.hamzy    1.20         jobjectArray jPl)
 935                    {
 936                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 937                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 938                       OperationContext  ctx;
 939                       CIMPropertyList   pl;
 940                    
 941                       if (jPl)
 942                          pl=getList(jEnv,jPl);
 943                       else
 944                          pl=CIMPropertyList();
 945 schuur        1.7  
 946                       try {
 947 mark.hamzy    1.20       CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,
 948                                                                            cop->getNameSpace(),
 949                                                                            *cop,
 950                                                                            (Boolean)lo,
 951                                                                            (Boolean)iq,
 952                                                                            (Boolean)ic,
 953                                                                            pl));
 954                          return DEBUG_ConvertCToJava (CIMInstance*, jint, inst);
 955 schuur        1.7     }
 956                       Catch(jEnv);
 957 mark.hamzy    1.20 
 958 schuur        1.7     return -1;
 959                    }
 960                    
 961                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
 962 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 963                    {
 964                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 965                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 966                       OperationContext  ctx;
 967 schuur        1.7  
 968                       try {
 969                          ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
 970                       }
 971                       Catch(jEnv);
 972                    }
 973                    
 974                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance
 975 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi)
 976 mark.hamzy    1.20 {
 977                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 978                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 979 mark.hamzy    1.22    CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
 980 mark.hamzy    1.20    OperationContext  ctx;
 981                    
 982 schuur        1.7     try {
 983                          ci->setPath(*cop);
 984 mark.hamzy    1.20 
 985 schuur        1.7        CIMObjectPath obj=ch->createInstance(ctx,cop->getNameSpace(),*ci);
 986 mark.hamzy    1.20 
 987                          return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
 988 schuur        1.7     }
 989                       Catch(jEnv);
 990 mark.hamzy    1.20 
 991 schuur        1.7     return 0;
 992                    }
 993                    
 994                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance
 995                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi,
 996 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
 997                    {
 998                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 999                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1000                       CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
1001                       CIMPropertyList   pl  = getList(jEnv,jPl);
1002                       OperationContext  ctx;
1003                    
1004 schuur        1.7     try {
1005                          ci->setPath(*cop);
1006                          ch->modifyInstance(ctx,cop->getNameSpace(),*ci,(Boolean)iq,pl);
1007                       }
1008                       Catch(jEnv);
1009                    }
1010                    
1011                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames
1012 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
1013                    {
1014                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1015                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1016                       OperationContext  ctx;
1017                    
1018 schuur        1.7     try {
1019                          Array<CIMObjectPath> enm=ch->enumerateInstanceNames(ctx,
1020 mark.hamzy    1.20                                                           cop->getNameSpace(),
1021                                                                              cop->getClassName()); //,(Boolean)deep);
1022                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1023 schuur        1.7     }
1024                       Catch(jEnv);
1025 mark.hamzy    1.20 
1026 schuur        1.7     return 0;
1027                    }
1028                    
1029                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances
1030                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
1031 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl)
1032                    {
1033                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1034                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1035                       CIMPropertyList   pl;
1036                       OperationContext  ctx;
1037                    
1038                       if (jPl)
1039                          pl=getList(jEnv,jPl);
1040                       else
1041                          pl=CIMPropertyList();
1042                    
1043 schuur        1.7     try {
1044 mark.hamzy    1.20       Array<CIMInstance> en=ch->enumerateInstances(ctx,
1045                                                                       cop->getNameSpace(),
1046                                                                       cop->getClassName(),
1047 mark.hamzy    1.33                                                    (Boolean)deep,
1048                                                                       (Boolean)lo,
1049                                                                       (Boolean)iq,
1050                                                                       (Boolean)ic,
1051 mark.hamzy    1.20                                                    pl);
1052                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(en));
1053 schuur        1.7     }
1054                       Catch(jEnv);
1055 mark.hamzy    1.20 
1056 schuur        1.7     return 0;
1057                    }
1058                    
1059                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery
1060 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jQuery, jstring jQl)
1061                    {
1062                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1063                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1064                       OperationContext  ctx;
1065                       const char       *str = jEnv->GetStringUTFChars(jQuery,NULL);
1066                       String            query(str);
1067 schuur        1.7  
1068                       jEnv->ReleaseStringUTFChars(jQuery,str);
1069 mark.hamzy    1.27 
1070 schuur        1.7     str=jEnv->GetStringUTFChars(jQl,NULL);
1071 mark.hamzy    1.20 
1072 schuur        1.7     String ql(str);
1073 mark.hamzy    1.20 
1074 schuur        1.7     jEnv->ReleaseStringUTFChars(jQl,str);
1075                    
1076                       try {
1077 mark.hamzy    1.20       Array<CIMObject>    enm=ch->execQuery(ctx,cop->getNameSpace(),ql,query);
1078 schuur        1.7        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
1079 mark.hamzy    1.20 
1080 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1081                             enmInst->append(CIMInstance(enm[i]));
1082 schuur        1.1        }
1083 mark.hamzy    1.20 
1084                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1085 schuur        1.1     }
1086                       Catch(jEnv);
1087 mark.hamzy    1.20 
1088 schuur        1.7     return 0;
1089 schuur        1.1  }
1090                    
1091 schuur        1.7  
1092 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
1093 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN)
1094                    {
1095                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1096                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1097                       OperationContext  ctx;
1098                       const char       *str = jEnv->GetStringUTFChars(jN,NULL);
1099 mark.hamzy    1.27    CIMName           prop(str);
1100                    
1101                       jEnv->ReleaseStringUTFChars(jN,str);
1102 schuur        1.3  
1103 schuur        1.1     try {
1104                          CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
1105 mark.hamzy    1.20 
1106                          return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
1107 schuur        1.1     }
1108                       Catch(jEnv);
1109 mark.hamzy    1.20 
1110 schuur        1.1     return -1;
1111                    }
1112                    
1113 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty
1114 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jPn, jint jV)
1115                    {
1116                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1117                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1118                       OperationContext  ctx;
1119                       CIMValue         *val = (CIMValue*)jCop;
1120                       const char       *str = jEnv->GetStringUTFChars(jPn,NULL);
1121                       CIMName           pName(str);
1122                    
1123 schuur        1.7     jEnv->ReleaseStringUTFChars(jPn,str);
1124 mark.hamzy    1.27 
1125 schuur        1.7     try {
1126                          ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);
1127                       }
1128                       Catch(jEnv);
1129                    }
1130                    
1131 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod
1132                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut)
1133                    {
1134 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1135                    
1136 mark.hamzy    1.20    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1137                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1138                       OperationContext  ctx;
1139                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1140                       CIMName           method(str);
1141 schuur        1.7  
1142                       jEnv->ReleaseStringUTFChars(jMn,str);
1143                    
1144                       Array<CIMParamValue> in;
1145                       Array<CIMParamValue> out;
1146                    
1147 mark.hamzy    1.26    for (int i = 0, m = jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i < m; i++) {
1148 schuur        1.7         JMPIjvm::checkException(jEnv);
1149 mark.hamzy    1.20 
1150 mark.hamzy    1.26        jobject jProp = jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
1151 mark.hamzy    1.23 
1152 schuur        1.7         JMPIjvm::checkException(jEnv);
1153 mark.hamzy    1.20 
1154 mark.hamzy    1.26        jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
1155 mark.hamzy    1.20        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1156                    
1157 schuur        1.7         JMPIjvm::checkException(jEnv);
1158 mark.hamzy    1.20 
1159 schuur        1.7         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
1160                       }
1161                       try {
1162 mark.hamzy    1.23       CIMValue *val = new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1163 schuur        1.7  
1164                          for (int i=0,m=out.size(); i<m; i++) {
1165 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
1166                             const CIMValue       v    = parm.getValue();
1167                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
1168                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
1169 mark.hamzy    1.26          jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
1170 mark.hamzy    1.20 
1171 mark.hamzy    1.26          jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
1172 schuur        1.7        }
1173 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1174                       }
1175 schuur        1.7     Catch(jEnv);
1176 mark.hamzy    1.20 
1177 schuur        1.7     return 0;
1178                    }
1179 schuur        1.1  
1180 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24
1181                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,
1182 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
1183                    {
1184 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1185                    
1186 mark.hamzy    1.20    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1187                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1188                       OperationContext  ctx;
1189                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1190 mark.hamzy    1.27    CIMName           method(str);
1191 mark.hamzy    1.20 
1192 schuur        1.7     jEnv->ReleaseStringUTFChars(jMn,str);
1193                    
1194                       Array<CIMParamValue> in;
1195                       Array<CIMParamValue> out;
1196 schuur        1.3  
1197 schuur        1.7     for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
1198                           JMPIjvm::checkException(jEnv);
1199 mark.hamzy    1.20 
1200 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
1201                           JMPIjvm::checkException(jEnv);
1202 mark.hamzy    1.20 
1203 mark.hamzy    1.26        jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
1204 mark.hamzy    1.20        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
1205                    
1206 schuur        1.7         JMPIjvm::checkException(jEnv);
1207 mark.hamzy    1.20 
1208 schuur        1.7         in.append(*p);
1209                       }
1210 schuur        1.1     try {
1211 schuur        1.7        CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1212                    
1213                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
1214 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
1215                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
1216 mark.hamzy    1.20 
1217 mark.hamzy    1.17          jEnv->SetObjectArrayElement(jOut,i,
1218 mark.hamzy    1.26                                      jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
1219 schuur        1.7        }
1220 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1221 schuur        1.1     }
1222                       Catch(jEnv);
1223 mark.hamzy    1.20 
1224 schuur        1.7     return 0;
1225 schuur        1.1  }
1226                    
1227 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames
1228                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1229 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
1230                    {
1231                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1232                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1233                       OperationContext  ctx;
1234                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1235 mark.hamzy    1.27    CIMName           assocClass(str);
1236 mark.hamzy    1.23 
1237 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1238 mark.hamzy    1.23 
1239 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1240 mark.hamzy    1.23 
1241 schuur        1.7     CIMName resultClass(str);
1242 mark.hamzy    1.23 
1243 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1244 mark.hamzy    1.23 
1245 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1246 mark.hamzy    1.23 
1247 schuur        1.7     String role(str);
1248 mark.hamzy    1.23 
1249 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1250 mark.hamzy    1.23 
1251 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1252 mark.hamzy    1.23 
1253 schuur        1.7     String resultRole(str);
1254 mark.hamzy    1.23 
1255 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1256                    
1257 schuur        1.1     try {
1258 schuur        1.7        Array<CIMObjectPath> enm=ch->associatorNames(ctx,
1259 mark.hamzy    1.23                                                    cop->getNameSpace(),
1260                                                                       *cop,
1261                                                                       assocClass,
1262                                                                       resultClass,
1263                                                                       role,
1264                                                                       resultRole);
1265                    
1266 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1267 schuur        1.7     }
1268                       Catch(jEnv);
1269 mark.hamzy    1.20 
1270 schuur        1.7     return 0;
1271                    }
1272                    
1273 mark.hamzy    1.31 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators
1274 schuur        1.7    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1275                       jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
1276 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1277                    {
1278                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1279                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1280                       OperationContext  ctx;
1281                       CIMPropertyList   pl  = getList(jEnv,jPl);
1282                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1283 mark.hamzy    1.27    CIMName           assocClass(str);
1284 mark.hamzy    1.23 
1285 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1286 mark.hamzy    1.23 
1287 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1288 mark.hamzy    1.23 
1289 schuur        1.7     CIMName resultClass(str);
1290 mark.hamzy    1.23 
1291 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1292 mark.hamzy    1.23 
1293 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1294 mark.hamzy    1.23 
1295 schuur        1.7     String role(str);
1296 mark.hamzy    1.23 
1297 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1298 mark.hamzy    1.23 
1299 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1300 mark.hamzy    1.23 
1301 schuur        1.7     String resultRole(str);
1302 mark.hamzy    1.23 
1303 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1304                    
1305                       try {
1306 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->associators(ctx,
1307                                                                        cop->getNameSpace(),
1308                                                                        *cop,
1309                                                                        assocClass,
1310                                                                        resultClass,
1311                                                                        role,
1312                                                                        resultRole,
1313                                                                        (Boolean)includeQualifiers,
1314                                                                        (Boolean)includeClassOrigin,
1315                                                                        pl);
1316                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1317                    
1318 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1319                             enmInst->append(CIMInstance(enm[i]));
1320 schuur        1.1        }
1321 mark.hamzy    1.23 
1322 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1323 schuur        1.1     }
1324                       Catch(jEnv);
1325 mark.hamzy    1.20 
1326 schuur        1.7     return 0;
1327 schuur        1.1  }
1328                    
1329 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames
1330                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1331 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
1332                    {
1333                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1334                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1335                       OperationContext  ctx;
1336                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1337 mark.hamzy    1.27    CIMName           assocClass(str);
1338 mark.hamzy    1.23 
1339 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1340 mark.hamzy    1.23 
1341 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1342 mark.hamzy    1.23 
1343 schuur        1.7     String role(str);
1344 mark.hamzy    1.23 
1345 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1346                    
1347                       try {
1348 mark.hamzy    1.23       Array<CIMObjectPath> enm = ch->referenceNames(ctx,
1349                                                                        cop->getNameSpace(),
1350                                                                        *cop,
1351                                                                        assocClass,
1352                                                                        role);
1353                    
1354 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1355 schuur        1.7     }
1356                       Catch(jEnv);
1357 mark.hamzy    1.20 
1358 schuur        1.7     return 0;
1359                    }
1360 schuur        1.1  
1361 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references
1362                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1363                       jstring jAssocClass, jstring jRole,
1364 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1365                    {
1366                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1367                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1368                       OperationContext  ctx;
1369                       CIMPropertyList   pl  = getList(jEnv,jPl);
1370                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1371                       CIMName           assocClass(str);
1372 schuur        1.3  
1373 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1374 mark.hamzy    1.23 
1375 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1376 mark.hamzy    1.20 
1377 schuur        1.7     String role(str);
1378 mark.hamzy    1.20 
1379 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1380                    
1381 schuur        1.1     try {
1382 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->references(ctx,
1383                                                                       cop->getNameSpace(),
1384                                                                       *cop,
1385                                                                       assocClass,
1386                                                                       role,
1387                                                                       (Boolean)includeQualifiers,
1388                                                                       (Boolean)includeClassOrigin,
1389                                                                       pl);
1390                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1391                    
1392 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1393                             enmInst->append(CIMInstance(enm[i]));
1394                          }
1395 mark.hamzy    1.23 
1396 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1397 schuur        1.1     }
1398                       Catch(jEnv);
1399 mark.hamzy    1.20 
1400 schuur        1.7     return 0;
1401 schuur        1.1  }
1402                    
1403 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent
1404 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd)
1405                    {
1406                       CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1407                       CIMInstance *ind = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInd);
1408 mark.hamzy    1.37    const char  *str = jEnv->GetStringUTFChars (jName, NULL);
1409                       String       name (str);
1410 schuur        1.1  
1411 mark.hamzy    1.37    jEnv->ReleaseStringUTFChars (jName, str);
1412                    
1413                       str = jEnv->GetStringUTFChars (jNs, NULL);
1414                    
1415                       String ns (str);
1416                    
1417                       jEnv->ReleaseStringUTFChars (jNs, str);
1418 mark.hamzy    1.27 
1419 mark.hamzy    1.37    CIMObjectPath ref (ind->getPath ());
1420 mark.hamzy    1.20 
1421 mark.hamzy    1.37    ref.setNameSpace (ns);
1422                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ref = "<<ref.toString ()<<PEGASUS_STD(endl));
1423                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ind = "<<ind->getPath ().toString ()<<PEGASUS_STD(endl));
1424                       ind->setPath (ref);
1425                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ind = "<<ind->getPath ().toString ()<<PEGASUS_STD(endl));
1426 mark.hamzy    1.20 
1427 mark.hamzy    1.37    JMPIProviderManager::indProvRecord   *prec        = NULL;
1428                       String                                sPathString = ind->getPath ().toString ();
1429                       OperationContext                     *context     = NULL;
1430                       bool                                  fResult     = false;
1431 schuur        1.3  
1432 mark.hamzy    1.37    {
1433                          AutoMutex lock (JMPIProviderManager::mutexProvTab);
1434 mark.hamzy    1.20 
1435 mark.hamzy    1.37       fResult = JMPIProviderManager::provTab.lookup (name, prec);
1436 schuur        1.8  
1437 mark.hamzy    1.37       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() fResult = "<<fResult<<", name = "<<name<<PEGASUS_STD(endl));
1438                       }
1439 schuur        1.3  
1440 mark.hamzy    1.37    if (fResult)
1441                       {
1442                          if (prec->enabled)
1443                          {
1444                             try
1445                             {
1446                                prec->handler->deliver (*prec->ctx, *ind);
1447 schuur        1.3           }
1448                             Catch(jEnv);
1449                          }
1450                       }
1451 mark.hamzy    1.37    else
1452                       {
1453                          DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() provider name \""<<name<<"\" not found"<<PEGASUS_STD(endl));
1454 schuur        1.3     }
1455                    }
1456 schuur        1.1  
1457 mark.hamzy    1.21 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1finalize
1458                       (JNIEnv *jEnv, jobject jThs, jint jCh)
1459                    {
1460                       CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1461                    
1462                       delete ch;
1463                    
1464                       DEBUG_ConvertCleanup (jint, jCh);
1465                    }
1466                    
1467 schuur        1.1  // -------------------------------------
1468                    // ---
1469                    // -		CIMClass
1470                    // ---
1471                    // -------------------------------------
1472                    
1473                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
1474 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCls)
1475                    {
1476                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1477                    
1478 schuur        1.1     try {
1479 mark.hamzy    1.23       CIMInstance *ci = new CIMInstance(cls->getClassName());
1480 mark.hamzy    1.20 
1481 schuur        1.5        for (int i=0,m=cls->getQualifierCount(); i<m; i++) {
1482                             try {
1483                                ci->addQualifier(cls->getQualifier(i).clone());
1484 mark.hamzy    1.17          }
1485                             catch (Exception e) {}
1486 schuur        1.5        }
1487 schuur        1.1        for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
1488 mark.hamzy    1.23          CIMProperty cp = cls->getProperty(i);
1489                    
1490 schuur        1.1           ci->addProperty(cp.clone());
1491 mark.hamzy    1.23 
1492 schuur        1.5           for (int j=0, s=cp.getQualifierCount(); j<s; j++) {
1493                                try {
1494                                   ci->getProperty(i).addQualifier(cp.getQualifier(j));
1495 mark.hamzy    1.17             }
1496                                catch (Exception e) {}
1497                             }
1498 schuur        1.1        }
1499 mark.hamzy    1.23 
1500 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1501 schuur        1.1     }
1502                       Catch(jEnv);
1503 mark.hamzy    1.20 
1504 schuur        1.1     return 0;
1505                    }
1506                    
1507                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
1508 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls)
1509                    {
1510                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1511 r.kieninger   1.11 
1512 schuur        1.1     try {
1513                          const String &cn=cls->getClassName().getString();
1514                          jstring str=jEnv->NewStringUTF(cn.getCString());
1515 mark.hamzy    1.20 
1516 schuur        1.1        return str;
1517                       }
1518                       Catch(jEnv);
1519 mark.hamzy    1.20 
1520 schuur        1.1     return 0;
1521                    }
1522                    
1523                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
1524 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1525                    {
1526                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1527                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1528                       jint        rv  = -1;
1529                       Uint32      pos = cls->findQualifier(String(str));
1530                    
1531 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1532 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(cls->getQualifier(pos)));
1533                    
1534 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1535 mark.hamzy    1.20 
1536 schuur        1.1     return rv;
1537                    }
1538                    
1539                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
1540 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1541                    {
1542                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1543                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1544                       jint        rv  = -1;
1545                       Uint32      pos = cls->findProperty(CIMName(str));
1546                    
1547 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1548 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMProperty*, jint, new CIMProperty(cls->getProperty(pos)));
1549                    
1550 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1551 mark.hamzy    1.20 
1552 schuur        1.1     return rv;
1553                    }
1554                    
1555                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
1556 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ)
1557                    {
1558                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1559                       const char *str = jEnv->GetStringUTFChars(jQ,NULL);
1560                       Uint32      pos = cls->findQualifier(String(str));
1561                    
1562 schuur        1.1     jEnv->ReleaseStringUTFChars(jQ,str);
1563 mark.hamzy    1.20 
1564 schuur        1.1     return (jboolean)(pos!=PEG_NOT_FOUND);
1565                    }
1566                    
1567                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
1568 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1569                    {
1570 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1571                    
1572 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1573 schuur        1.5  
1574 schuur        1.1     for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
1575 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(cls->getProperty(i));
1576                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1577 mark.hamzy    1.16 
1578 mark.hamzy    1.26       jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1579 mark.hamzy    1.16 
1580 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1581 schuur        1.1     }
1582 mark.hamzy    1.20 
1583 schuur        1.1     return jVec;
1584                    }
1585                    
1586 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
1587 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP)
1588                    {
1589                       CIMClass    *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1590                       CIMProperty *p   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
1591                    
1592 schuur        1.5     cls->addProperty(*p);
1593                    }
1594                    
1595                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
1596 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1597                    {
1598 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1599                    
1600 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1601                    
1602 schuur        1.5     for (int i=cls->getPropertyCount()-1; i>=0; i--) {
1603                          cls->removeProperty(i);
1604                       }
1605 mark.hamzy    1.26    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
1606 mark.hamzy    1.20       JMPIjvm::checkException(jEnv);
1607                    
1608 mark.hamzy    1.26       jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
1609 mark.hamzy    1.20 
1610 mark.hamzy    1.26       jint         jp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
1611 mark.hamzy    1.20       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1612                    
1613                          JMPIjvm::checkException(jEnv);
1614                    
1615 schuur        1.5        cls->addProperty(*cp);
1616                       }
1617                    }
1618                    
1619                    
1620                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
1621 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1622                    {
1623 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1624                    
1625 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1626 schuur        1.5  
1627                       for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
1628 mark.hamzy    1.20       CIMQualifier *cq   = new CIMQualifier(cls->getQualifier(i));
1629                          jint          jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq);
1630 mark.hamzy    1.26       jobject       qual = jEnv->NewObject(JMPIjvm::jv.CIMQualifierClassRef,JMPIjvm::jv.CIMQualifierNewI,jCq);
1631 mark.hamzy    1.20 
1632 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,qual);
1633 schuur        1.5     }
1634 mark.hamzy    1.20 
1635 schuur        1.5     return jVec;
1636                    }
1637                    
1638 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
1639 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1640                    {
1641                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1642                       CIMClass   *cls = new CIMClass(CIMName(str), CIMName());
1643                    
1644 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1645 mark.hamzy    1.20 
1646                       return DEBUG_ConvertCToJava (CIMClass*, jint, cls);
1647 schuur        1.1  }
1648                    
1649                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
1650 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls)
1651                    {
1652                       CIMClass     *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1653                       const String &cn  = cls->getSuperClassName().getString();
1654                    
1655 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1656 mark.hamzy    1.20 
1657 schuur        1.1     return str;
1658                    }
1659                    
1660                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
1661 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1662                    {
1663 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1664                    
1665 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1666                    
1667 schuur        1.1     if (cls->hasKeys()) {
1668                          Array<CIMName> keyNames;
1669                          cls->getKeyNames(keyNames);
1670                          for(int i=0, s=keyNames.size();i<s;i++){
1671                             Uint32 pos=cls->findProperty(keyNames[i]);
1672                             if (pos!=PEG_NOT_FOUND){
1673 mark.hamzy    1.20             CIMProperty *cp  = new CIMProperty(cls->getProperty(pos));
1674                                jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1675                    
1676 mark.hamzy    1.26             jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1677 mark.hamzy    1.20 
1678 mark.hamzy    1.26             jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1679 schuur        1.1           }
1680                          }
1681                       }
1682 mark.hamzy    1.20 
1683 schuur        1.1     return jVec;
1684                    }
1685                    
1686                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
1687 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1688                    {
1689                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1690                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1691                       jint        rv  = -1;
1692                       Uint32      pos = cls->findMethod(String(str));
1693                    
1694 schuur        1.1     if (pos!=PEG_NOT_FOUND) {
1695 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMMethod*, jint, new CIMMethod(cls->getMethod(pos)));
1696 schuur        1.1     }
1697 mark.hamzy    1.20 
1698 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1699 mark.hamzy    1.20 
1700 schuur        1.1     return rv;
1701                    }
1702                    
1703                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
1704 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared)
1705                    {
1706                       CIMClass *cls             = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1707                       CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC (jint, CIMClass*, jClsToBeCompared);
1708                    
1709 schuur        1.1     return cls->identical(*clsToBeCompared);
1710                    }
1711                    
1712                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
1713 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls)
1714                    {
1715                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1716                    
1717 schuur        1.1     delete cls;
1718 mark.hamzy    1.20 
1719                       DEBUG_ConvertCleanup (jint, jCls);
1720 schuur        1.1  }
1721                    
1722 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
1723 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
1724                    {
1725                       CIMClass *cc   = DEBUG_ConvertJavaToC (jint, CIMClass*, jInst);
1726 mark.hamzy    1.22    CIMClass *cf   = 0;
1727 mark.hamzy    1.20    CIMName   clsn = cc->getClassName();
1728 schuur        1.7  
1729                       if (lo) {
1730 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1731                    
1732 schuur        1.7        CIMName clsn=cc->getClassName();
1733 mark.hamzy    1.23 
1734 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--)
1735                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1736 mark.hamzy    1.23 
1737 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1738 schuur        1.7     }
1739                       else if (jPl) {
1740 mark.hamzy    1.23       CIMPropertyList pl = getList(jEnv,jPl);
1741                          Array<CIMName>  n  = pl.getPropertyNameArray();
1742                    
1743                          cf = new CIMClass(clsn, cc->getSuperClassName());
1744                    
1745                          for (int i = 0,s = n.size(); i < s; i++) {
1746 schuur        1.7           Uint32 pos=cc->findProperty(n[i]);
1747 mark.hamzy    1.23 
1748 schuur        1.7           if (pos!=PEG_NOT_FOUND) {
1749                                if (iq) {
1750 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos).clone();
1751                    
1752                                   if (!ic)
1753                                      cp.setClassOrigin(CIMName());
1754                    
1755 schuur        1.7                 cf->addProperty(cp);
1756                                }
1757                                else {
1758 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos);
1759                                   CIMName     co;
1760                    
1761                                   if (ic)
1762                                      co = cp.getClassOrigin();
1763                    
1764                                   CIMProperty np(cp.getName(),
1765                                                  cp.getValue(),
1766                                                  cp.getArraySize(),
1767                                                  cp.getReferenceClassName(),
1768                                                  co,
1769                                                  cp.getPropagated());
1770                    
1771 schuur        1.7                 cf->addProperty(np);
1772                                }
1773                             }
1774                          }
1775 mark.hamzy    1.23       if (iq)
1776                             for (Uint32 i = 0, s = cc->getQualifierCount(); i < s; i++)
1777                                cf->addQualifier(cc->getQualifier(i));
1778 schuur        1.7     }
1779                       else if (iq) {
1780 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1781                    
1782                          if (ic)
1783                             return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1784                    
1785                          for (int i = cf->getPropertyCount()-1; i >= 0; i--) {
1786 schuur        1.7           CIMProperty cp=cf->getProperty(i);
1787 mark.hamzy    1.23 
1788 schuur        1.7           cp.setClassOrigin(CIMName());
1789                             cf->removeProperty(i);
1790                             cf->addProperty(cp);
1791                          }
1792                       }
1793                       else {
1794 mark.hamzy    1.23       cf = new CIMClass(clsn, cc->getSuperClassName());
1795                    
1796                          for (int i = cc->getPropertyCount()-1; i >= 0; i--) {
1797                             CIMProperty cp = cc->getProperty(i);
1798                             CIMName     co;
1799                    
1800                             if (ic)
1801                                co = cp.getClassOrigin();
1802                    
1803                             CIMProperty np(cp.getName(),
1804                                            cp.getValue(),
1805                                            cp.getArraySize(),
1806                                            cp.getReferenceClassName(),
1807                                            co,
1808                                            cp.getPropagated());
1809                    
1810 schuur        1.7           cf->addProperty(np);
1811                          }
1812                       }
1813                    
1814 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1815 schuur        1.7  }
1816                    
1817 schuur        1.1  
1818                    
1819                    // -------------------------------------
1820                    // ---
1821                    // -		CIMInstance
1822                    // ---
1823                    
1824                    // -------------------------------------
1825                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
1826 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
1827                    {
1828                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance());
1829 schuur        1.1  }
1830                    
1831                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
1832 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1833                    {
1834 mark.hamzy    1.27    const char *str = jEnv->GetStringUTFChars(jN,NULL);
1835                       CIMInstance *ci = new CIMInstance(CIMName(str));
1836 mark.hamzy    1.20 
1837 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
1838                    
1839                       return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1840 schuur        1.1  }
1841                    
1842                    //Added by Andy Viciu
1843                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
1844 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1845                    {
1846                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1847                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1848                    
1849 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
1850                    
1851 schuur        1.1     /* NOT SUPPORTED AND NOT NEEDED*/
1852                    }
1853                    
1854                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
1855 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV)
1856                    {
1857                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1858                       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
1859                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1860                       Uint32       pos = ci->findProperty(CIMName(str));
1861                    
1862 schuur        1.5     try {
1863 mark.hamzy    1.27       if (pos!=PEG_NOT_FOUND)
1864                          {
1865 schuur        1.6           CIMProperty cp=ci->getProperty(pos);
1866 mark.hamzy    1.27 
1867 schuur        1.6           if (cp.getType()==cv->getType())
1868 mark.hamzy    1.27          {
1869 schuur        1.6              cp.setValue(*cv);
1870 mark.hamzy    1.27          }
1871                             else
1872                             {
1873 mark.hamzy    1.16             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");
1874                                DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));
1875                    
1876 schuur        1.6              throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
1877                             }
1878 mark.hamzy    1.27 
1879 schuur        1.6           ci->removeProperty(pos);
1880                             ci->addProperty(cp);
1881                          }
1882 mark.hamzy    1.27       else
1883                          {
1884 schuur        1.6           CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
1885                             ci->addProperty(*cp);
1886 schuur        1.1        }
1887                       }
1888 schuur        1.5     Catch(jEnv);
1889 schuur        1.1  
1890                       jEnv->ReleaseStringUTFChars(jN,str);
1891                    }
1892                    
1893 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
1894 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV)
1895                    {
1896                       throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported"));
1897 schuur        1.5  }
1898                    
1899 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
1900 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1901                    {
1902                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1903                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1904                       jint         rv  = -1;
1905                    
1906 schuur        1.1     try {
1907 mark.hamzy    1.23       Uint32 pos = ci->findProperty(CIMName(str));
1908                    
1909 mark.hamzy    1.27       if (pos != PEG_NOT_FOUND)
1910                          {
1911 mark.hamzy    1.23          CIMProperty *cp = new CIMProperty(ci->getProperty(pos));
1912                    
1913 mark.hamzy    1.20          rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1914 schuur        1.1        }
1915                       }
1916                       Catch(jEnv);
1917 mark.hamzy    1.20 
1918 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1919 mark.hamzy    1.20 
1920 schuur        1.1     return rv;
1921                    }
1922                    
1923                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
1924 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1925                    {
1926 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1927                    
1928 mark.hamzy    1.20    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1929 schuur        1.5  
1930 mark.hamzy    1.37 //@HACK
1931 mark.hamzy    1.40 //cout << "ci->getPropertyCount() = " << ci->getPropertyCount() << endl;
1932 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1933 mark.hamzy    1.40 //cout << ci->getProperty(i).getName ().getString ()
1934                    //     << " "
1935                    //     << ci->getProperty(i).getQualifierCount ()
1936                    //     << " "
1937                    //     << ci->getProperty(i).findQualifier(CIMName ("key"))
1938                    //     << endl;
1939 schuur        1.1        if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
1940 mark.hamzy    1.20          CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1941                             jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1942                    
1943 mark.hamzy    1.26          jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1944 mark.hamzy    1.20 
1945 mark.hamzy    1.26          jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1946 schuur        1.1        }
1947                       }
1948                    
1949                       return jVec;
1950                    }
1951                    
1952                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
1953 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1954                    {
1955                       CIMInstance  *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1956                       const String &cn = ci->getClassName().getString();
1957                    
1958 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1959 mark.hamzy    1.20 
1960 schuur        1.1     return str;
1961                    }
1962                    
1963                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
1964 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1965                    {
1966                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1967                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1968                       jint         rv  = -1;
1969                       Uint32       pos = ci->findQualifier(String(str));
1970                    
1971 mark.hamzy    1.27    if (pos!=PEG_NOT_FOUND)
1972                       {
1973 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos)));
1974 schuur        1.1     }
1975 mark.hamzy    1.20 
1976 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1977 mark.hamzy    1.20 
1978 schuur        1.1     return rv;
1979                    }
1980                    
1981                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
1982 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1983                    {
1984                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1985                       CIMInstance *cl = new CIMInstance(ci->clone());
1986                    
1987                       return DEBUG_ConvertCToJava (CIMInstance*, jint, cl);
1988 schuur        1.1  }
1989                    
1990                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
1991 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1992                    {
1993 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1994                    
1995 mark.hamzy    1.20    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1996 mark.hamzy    1.16 
1997 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1998 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1999                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2000 mark.hamzy    1.16 
2001 mark.hamzy    1.26       jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
2002 mark.hamzy    1.16 
2003 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
2004 schuur        1.1     }
2005 mark.hamzy    1.16 
2006 schuur        1.1     return jVec;
2007                    }
2008                    
2009                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
2010 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
2011                    {
2012                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2013                    
2014 schuur        1.1     delete ci;
2015 mark.hamzy    1.20 
2016                       DEBUG_ConvertCleanup (jint, jInst);
2017 schuur        1.1  }
2018                    
2019 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties
2020 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
2021                    {
2022                       CIMInstance *ci   = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2023 mark.hamzy    1.22    CIMInstance *cf   = 0;
2024 mark.hamzy    1.20    CIMName      clsn = ci->getClassName();
2025 schuur        1.7  
2026                       if (lo) {
2027                          cf=new CIMInstance(ci->clone());
2028                          CIMName clsn=ci->getClassName();
2029                          for (int i=cf->getPropertyCount()-1; i>=0; i--)
2030                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
2031 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2032 schuur        1.7     }
2033                       else if (jPl) {
2034                          CIMPropertyList pl=getList(jEnv,jPl);
2035                          Array<CIMName> n=pl.getPropertyNameArray();
2036                          cf=new CIMInstance(clsn);
2037                          for (int i=0,s=n.size(); i<s; i++) {
2038                             Uint32 pos=ci->findProperty(n[i]);
2039                             if (pos!=PEG_NOT_FOUND) {
2040                                if (iq) {
2041                                   CIMProperty cp=ci->getProperty(pos).clone();
2042                                   if (!ic) cp.setClassOrigin(CIMName());
2043                                   cf->addProperty(cp);
2044                                }
2045                                else {
2046                                   CIMProperty cp=ci->getProperty(pos);
2047                                   CIMName co;
2048                                   if (ic) co=cp.getClassOrigin();
2049                                   CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
2050                                                  cp.getReferenceClassName(),co,cp.getPropagated());
2051                                   cf->addProperty(np);
2052                                }
2053 schuur        1.7           }
2054                          }
2055                          cf->setPath(ci->getPath());
2056                       }
2057                       else if (iq) {
2058                          cf=new CIMInstance(ci->clone());
2059 mark.hamzy    1.20       if (ic) return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2060 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--) {
2061                             CIMProperty cp=cf->getProperty(i);
2062                             cp.setClassOrigin(CIMName());
2063                             cf->removeProperty(i);
2064                             cf->addProperty(cp);
2065                          }
2066                       }
2067                       else {
2068                          cf=new CIMInstance(clsn);
2069                          for (int i=ci->getPropertyCount()-1; i>=0; i--) {
2070                             CIMProperty cp=ci->getProperty(i);
2071                             CIMName co;
2072                             if (ic) co=cp.getClassOrigin();
2073                             CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
2074                                            cp.getReferenceClassName(),co,cp.getPropagated());
2075                             cf->addProperty(np);
2076                          }
2077                          cf->setPath(ci->getPath());
2078                       }
2079                    
2080 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2081 schuur        1.7  }
2082 schuur        1.1  
2083 mark.hamzy    1.40 /*
2084                     * Class:     org_pegasus_jmpi_CIMInstance
2085                     * Method:    _getObjectPath
2086                     * Signature: (I)I
2087                     */
2088                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getObjectPath
2089                      (JNIEnv *jEnv, jobject jThs, jint jciCi)
2090                    {
2091                       CIMInstance   *ci     = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciCi);
2092                       CIMObjectPath *copRet = NULL;
2093                    
2094                       try
2095                       {
2096                          if (ci)
2097                          {
2098                             const CIMObjectPath& cop = ci->getPath ();
2099                    
2100                             copRet = new CIMObjectPath (cop);
2101                          }
2102                       }
2103                       Catch (jEnv);
2104 mark.hamzy    1.40 
2105                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, copRet);
2106                    }
2107                    
2108                    /*
2109                     * Class:     org_pegasus_jmpi_CIMInstance
2110                     * Method:    _setObjectPath
2111                     * Signature: (II)V
2112                     */
2113                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setObjectPath
2114                      (JNIEnv *jEnv, jobject jThs, jint jciCi, jint jciCop)
2115                    {
2116                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciCi);
2117                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jciCop);
2118                    
2119                       try
2120                       {
2121                          if (  ci
2122                             && cop
2123                             )
2124                          {
2125 mark.hamzy    1.40          ci->setPath (*cop);
2126                          }
2127                       }
2128                       Catch (jEnv);
2129                    }
2130                    
2131                    /*
2132                     * Class:     org_pegasus_jmpi_CIMInstance
2133                     * Method:    _getPropertyCount
2134                     * Signature: (I)I
2135                     */
2136                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyCount
2137                      (JNIEnv *jEnv, jobject jThs, jint jciCi)
2138                    {
2139                       CIMInstance *ci      = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciCi);
2140                       Uint32       ui32Ret = 0;
2141                    
2142                       try
2143                       {
2144                          if (ci)
2145                          {
2146 mark.hamzy    1.40          ui32Ret = ci->getPropertyCount ();
2147                          }
2148                       }
2149                       Catch (jEnv);
2150                    
2151                       return ui32Ret;
2152                    }
2153                    
2154                    /*
2155                     * Class:     org_pegasus_jmpi_CIMInstance
2156                     * Method:    _getProperty
2157                     * Signature: (II)I
2158                     */
2159                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyI
2160                      (JNIEnv *jEnv, jobject jThs, jint jciCi, jint ji)
2161                    {
2162                       CIMInstance *ci    = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciCi);
2163                       CIMProperty *cpRet = NULL;
2164                    
2165                       try
2166                       {
2167 mark.hamzy    1.40       if (ci)
2168                          {
2169                             CIMProperty  cp;
2170                    
2171                             cp = ci->getProperty (ji);
2172                    
2173                             cpRet = new CIMProperty (cp);
2174                          }
2175                       }
2176                       Catch (jEnv);
2177                    
2178                       return DEBUG_ConvertCToJava (CIMProperty*, jint, cpRet);
2179                    }
2180                    
2181 schuur        1.1  // -------------------------------------
2182                    // ---
2183                    // -		CIMObjectPath
2184                    // ---
2185                    // -------------------------------------
2186                    
2187 mark.hamzy    1.20 CIMObjectPath* construct()
2188                    {
2189                       CIMObjectPath *cop = new CIMObjectPath();
2190                       _nameSpace     n;
2191                    
2192 schuur        1.1     cop->setNameSpace(n.nameSpace());
2193                       cop->setHost(n.hostName());
2194 mark.hamzy    1.20 
2195 schuur        1.1     return cop;
2196                    }
2197                    
2198                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
2199 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2200                    {
2201                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, construct());
2202 schuur        1.1  }
2203                    
2204                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
2205 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn)
2206                    {
2207                       CIMObjectPath *cop = construct();
2208                       const char    *str = jEnv->GetStringUTFChars(jCn,NULL);
2209                    
2210                       if (str)
2211                          cop->setClassName(str);
2212 mark.hamzy    1.27 
2213 schuur        1.1     jEnv->ReleaseStringUTFChars(jCn,str);
2214 mark.hamzy    1.20 
2215                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2216 schuur        1.1  }
2217                    
2218                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
2219 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs)
2220                    {
2221                       CIMObjectPath *cop  = construct();
2222                       const char    *str1 = NULL;
2223                       const char    *str2 = NULL;
2224 schuur        1.1  
2225                       try {
2226 schuur        1.6        if (jCn) str1=jEnv->GetStringUTFChars(jCn,NULL);
2227                          if (jNs) str2=jEnv->GetStringUTFChars(jNs,NULL);
2228 schuur        1.1        if (str1) cop->setClassName(str1);
2229                          if (str2) cop->setNameSpace(str2);
2230                       }
2231 schuur        1.5     Catch(jEnv);
2232 schuur        1.1  
2233 schuur        1.6     if (str1) jEnv->ReleaseStringUTFChars(jCn,str1);
2234                       if (str2) jEnv->ReleaseStringUTFChars(jNs,str2);
2235 mark.hamzy    1.20 
2236                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2237 schuur        1.1  }
2238                    
2239                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
2240 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
2241                    {
2242                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2243                       CIMObjectPath *cop = new CIMObjectPath(ci->getPath());
2244                       _nameSpace     n;
2245                    
2246 schuur        1.1     if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
2247                       if (cop->getHost()==NULL) cop->setHost(n.hostName());
2248 mark.hamzy    1.20 
2249                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2250 schuur        1.1  }
2251                    
2252                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
2253 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2254                    {
2255                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2256                    
2257 schuur        1.1     delete cop;
2258 mark.hamzy    1.20 
2259                       DEBUG_ConvertCleanup (jint, jCop);
2260 schuur        1.1  }
2261                    
2262                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
2263 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2264                    {
2265                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2266                       const String  &hn = cop->getHost();
2267                    
2268 schuur        1.1     jstring str=jEnv->NewStringUTF(hn.getCString());
2269 mark.hamzy    1.20 
2270 schuur        1.1     return str;
2271                    }
2272                    
2273                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
2274 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2275                    {
2276                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2277                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2278                    
2279 schuur        1.1     cop->setHost(String(str));
2280 mark.hamzy    1.27 
2281 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2282                    }
2283                    
2284                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
2285 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2286                    {
2287                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2288                       const String  &cn  = cop->getClassName().getString();
2289                    
2290 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
2291 mark.hamzy    1.20 
2292 schuur        1.1     return str;
2293                    }
2294                    
2295                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
2296 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2297                    {
2298                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2299                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2300                    
2301 schuur        1.1     cop->setClassName(String(str));
2302 mark.hamzy    1.27 
2303 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2304                    }
2305                    
2306                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
2307 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2308                    {
2309                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2310                       const String  &ns  = cop->getNameSpace().getString();
2311                    
2312 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2313 mark.hamzy    1.20 
2314 schuur        1.1     return str;
2315                    }
2316                    
2317                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
2318 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2319                    {
2320                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2321                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2322                    
2323 schuur        1.1     cop->setNameSpace(CIMNamespaceName(str));
2324 mark.hamzy    1.27 
2325 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2326                    }
2327                    
2328                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
2329 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jId, jint jVal)
2330                    {
2331                       CIMObjectPath       *cop         = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2332                       const char          *str         = jEnv->GetStringUTFChars(jId,NULL);
2333                       CIMValue            *cv          = DEBUG_ConvertJavaToC (jint, CIMValue*, jVal);
2334                       Array<CIMKeyBinding> keyBindings = cop->getKeyBindings();
2335                    
2336 schuur        1.1     keyBindings.append(CIMKeyBinding(str,*cv));
2337                       cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
2338 mark.hamzy    1.27 
2339 schuur        1.1     jEnv->ReleaseStringUTFChars(jId,str);
2340                    }
2341                    
2342                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
2343 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2344                    {
2345 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
2346                    
2347 mark.hamzy    1.20    CIMObjectPath              *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2348                       const Array<CIMKeyBinding> &akb = cop->getKeyBindings();
2349 schuur        1.1  
2350                       for (Uint32 i=0,s=akb.size(); i<s; i++) {
2351                          const String &n=akb[i].getName().getString();
2352                          const String &v=akb[i].getValue();
2353                          CIMKeyBinding::Type t=akb[i].getType();
2354 mark.hamzy    1.20       CIMValue *cv = 0;
2355 schuur        1.1        switch (t) {
2356                          case CIMKeyBinding::NUMERIC:
2357                             cv=new CIMValue((Sint32)atol(v.getCString()));
2358                             break;
2359                          case CIMKeyBinding::STRING:
2360                             cv=new CIMValue(v);
2361                             break;
2362                          case CIMKeyBinding::BOOLEAN:
2363                             cv=new CIMValue((Boolean)(v.getCString()));
2364                             break;
2365                          case CIMKeyBinding::REFERENCE:
2366                             cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
2367                             break;
2368                          default:
2369                             throwCIMException(jEnv,"+++ unsupported type: ");
2370                          }
2371 r.kieninger   1.11 
2372 mark.hamzy    1.20       CIMProperty *cp = 0;
2373                          if (t!=CIMKeyBinding::REFERENCE)
2374 schuur        1.1           cp=new CIMProperty(n,*cv);
2375 mark.hamzy    1.20       else
2376                             cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
2377                    
2378                          jint    jCp  = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2379 mark.hamzy    1.26       jobject prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
2380 schuur        1.1  
2381 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
2382 schuur        1.1     }
2383 mark.hamzy    1.20 
2384 schuur        1.1     return jVec;
2385                    }
2386                    
2387                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
2388 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jStr)
2389                    {
2390                       CIMObjectPath              *cop        = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2391                       const Array<CIMKeyBinding> &akb        = cop->getKeyBindings();
2392                       const char                 *strKeyName = jEnv->GetStringUTFChars(jStr,NULL);
2393                       jstring                     retStr     = NULL;
2394                    
2395 mark.hamzy    1.27    for (Uint32 i=0,s=akb.size(); i<s; i++)
2396                       {
2397 schuur        1.1        const String &n=akb[i].getName().getString();
2398 mark.hamzy    1.27 
2399                          if (n==String(strKeyName))
2400                          {
2401 schuur        1.1           retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
2402                             break;
2403                          }
2404                       }
2405 mark.hamzy    1.20 
2406 schuur        1.1     jEnv->ReleaseStringUTFChars(jStr,strKeyName);
2407 mark.hamzy    1.20 
2408 schuur        1.1     return retStr;
2409                    }
2410                    
2411                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
2412 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jStr)
2413                    {
2414                       const char    *strCop = jEnv->GetStringUTFChars(jStr,NULL);
2415                       CIMObjectPath *cop    = new CIMObjectPath();
2416                    
2417 schuur        1.1     cop->set(String(strCop));
2418 mark.hamzy    1.27 
2419 schuur        1.1     jEnv->ReleaseStringUTFChars(jStr,strCop);
2420 mark.hamzy    1.20 
2421                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2422 schuur        1.1  }
2423                    
2424                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
2425 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2426                    {
2427 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
2428                    
2429 mark.hamzy    1.20    CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2430                       Array<CIMKeyBinding>  akb;
2431                    
2432 mark.hamzy    1.26    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
2433                          jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
2434 mark.hamzy    1.20 
2435 mark.hamzy    1.26       jint         jCp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
2436 mark.hamzy    1.20       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp);
2437                    
2438 schuur        1.1        akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
2439                       }
2440                       cop->setKeyBindings(akb);
2441                    }
2442                    
2443                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
2444 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2445                    {
2446                       CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2447                       CIMObjectPath *copl = new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
2448                    
2449                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, copl);
2450 schuur        1.1  }
2451                    
2452                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
2453 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2454                    {
2455                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2456                       const String  &ns  = cop->toString();
2457                    
2458 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2459 mark.hamzy    1.20 
2460 schuur        1.1     return str;
2461                    }
2462                    
2463                    // -------------------------------------
2464                    // ---
2465                    // -		CIMDataType
2466                    // ---
2467                    // -------------------------------------
2468                    
2469                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
2470 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type)
2471                    {
2472                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type));
2473 schuur        1.1  }
2474                    
2475                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
2476 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jint size)
2477                    {
2478                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,size));
2479 schuur        1.1  }
2480                    
2481                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
2482 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)
2483                    {
2484                       const char *ref   = jEnv->GetStringUTFChars(jRef,NULL);
2485                       jint        cInst = DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,String(ref)));
2486                    
2487 schuur        1.1     jEnv->ReleaseStringUTFChars(jRef,ref);
2488 mark.hamzy    1.20 
2489 schuur        1.1     return cInst;
2490                    }
2491                    
2492                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
2493 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2494                    {
2495                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2496                    
2497 schuur        1.1     return dt->_array==true;
2498                    }
2499                    
2500                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
2501 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2502                    {
2503                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2504                    
2505 schuur        1.1     return dt->_reference==true;
2506                    }
2507                    
2508                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
2509 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2510                    {
2511                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2512                    
2513 schuur        1.1     return dt->_reference==true;
2514                    }
2515                    
2516                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
2517 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2518                    {
2519                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2520                    
2521 schuur        1.1     return dt->_type;
2522                    }
2523                    
2524                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
2525 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2526                    {
2527                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2528                    
2529 schuur        1.1     return dt->_size;
2530                    }
2531                    
2532                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
2533 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2534                    {
2535                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2536                       jstring    str = jEnv->NewStringUTF(dt->_refClass.getCString());
2537                    
2538 schuur        1.1     return str;
2539                    }
2540                    
2541                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
2542 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2543                    {
2544                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2545                       jstring    str = NULL;
2546                    
2547 mark.hamzy    1.35    if (dt->_type & 0x10)
2548                       {
2549                          bool   fSuccess = false;
2550                          String tmp      = _dataType::convertJavaTypeToChars (dt->_type-0x10, &fSuccess);
2551                    
2552                          if (!fSuccess)
2553                             return str;
2554                    
2555                          tmp = tmp + "[]";
2556                    
2557                          str = jEnv->NewStringUTF(tmp.getCString());
2558                       }
2559                       else if (dt->_type == 0x20 + 1) // REFERENCE
2560                       {
2561                          String tmp = dt->_refClass + " REF";
2562                    
2563                          str = jEnv->NewStringUTF(tmp.getCString());
2564 schuur        1.6     }
2565 mark.hamzy    1.35    else
2566                       {
2567                          bool  fSuccess = false;
2568                          char *tmp      = _dataType::convertJavaTypeToChars (dt->_type, &fSuccess);
2569                    
2570                          if (!fSuccess)
2571                             return str;
2572                    
2573                          str = jEnv->NewStringUTF(tmp);
2574 schuur        1.1     }
2575 mark.hamzy    1.20 
2576 schuur        1.1     return str;
2577                    }
2578                    
2579 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDataType__1finalize
2580                          (JNIEnv *jEnv, jobject jThs, jint jDt)
2581                    {
2582                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2583                    
2584                       delete dt;
2585                    
2586                       DEBUG_ConvertCleanup (jint, jDt);
2587                    }
2588                    
2589 schuur        1.1  
2590                    // -------------------------------------
2591                    // ---
2592 schuur        1.6  // -		CIMArgument
2593                    // ---
2594                    // -------------------------------------
2595                    
2596                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue
2597 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2598                    {
2599                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2600                       CIMValue      *cv = new CIMValue(cp->getValue());
2601                    
2602                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2603 schuur        1.6  }
2604                    
2605                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1new
2606 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2607                    {
2608                       CIMParamValue *p = new CIMParamValue(String::EMPTY,CIMValue());
2609                    
2610                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2611 schuur        1.6  }
2612                    
2613                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS
2614 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
2615                    {
2616                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2617                       CIMParamValue *p   = new CIMParamValue(str,CIMValue());
2618                    
2619 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2620 mark.hamzy    1.20 
2621                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2622 schuur        1.6  }
2623                    
2624                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV
2625 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2626                    {
2627                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2628                       CIMValue      *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2629                       CIMParamValue *p   = new CIMParamValue(str,cv);
2630                    
2631 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2632 mark.hamzy    1.20 
2633                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2634 schuur        1.6  }
2635                    
2636                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue
2637 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2638                    {
2639                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2640                       CIMValue      *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2641                    
2642 schuur        1.6     cp->setValue(*cv);
2643                    }
2644                    
2645                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName
2646 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2647                    {
2648                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2649                       const String  &n   = cp->getParameterName();
2650                       jstring        str = jEnv->NewStringUTF(n.getCString());
2651                    
2652 schuur        1.6     return str;
2653                    }
2654                    
2655                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName
2656 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2657                    {
2658                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2659                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2660                       String         n(str);
2661                    
2662 schuur        1.6     cp->setParameterName(n);
2663 mark.hamzy    1.27 
2664 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2665                    }
2666                    
2667                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType
2668 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2669                    {
2670 mark.hamzy    1.35    CIMParamValue *cp       = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2671                       const CIMValue cv       = cp->getValue();
2672 mark.hamzy    1.20    String         ref;
2673 mark.hamzy    1.35    bool           fSuccess = false;
2674                       int            iJType   = 0;
2675                       _dataType     *type     = 0;
2676                    
2677                       iJType = _dataType::convertCTypeToJavaType (cv.getType(), &fSuccess);
2678                    
2679                       if (fSuccess)
2680                       {
2681                          type = new _dataType (iJType,
2682                                                cv.getArraySize(),
2683                                                false,
2684                                                false,
2685                                                cv.isArray(),
2686                                                ref,
2687                                                true);
2688                       }
2689 mark.hamzy    1.20 
2690                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2691 schuur        1.6  }
2692                    
2693                    // -------------------------------------
2694                    // ---
2695 schuur        1.1  // -		CIMProperty
2696                    // ---
2697                    // -------------------------------------
2698                    
2699                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
2700 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2701                    {
2702                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2703                       CIMValue    *cv = new CIMValue(cp->getValue());
2704                    
2705                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2706 schuur        1.1  }
2707                    
2708 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
2709 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2710                    {
2711                       CIMProperty *p = new CIMProperty(CIMName(),CIMValue());
2712                    
2713                       return DEBUG_ConvertCToJava (CIMProperty*, jint, p);
2714 schuur        1.5  }
2715                    
2716 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
2717 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2718                    {
2719 mark.hamzy    1.27    CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2720                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2721                       CIMProperty *cp  = 0;
2722                       jint         jCp = -1;
2723                    
2724 schuur        1.1     try {
2725                          if (cv->getType()!=CIMTYPE_REFERENCE)
2726 mark.hamzy    1.27       {
2727 schuur        1.1           cp=new CIMProperty(String(str),*cv);
2728 mark.hamzy    1.27       }
2729                          else
2730                          {
2731                             if (!cv->isArray())
2732                             {
2733 schuur        1.1              CIMObjectPath cop;
2734 mark.hamzy    1.27 
2735 schuur        1.1              cv->get(cop);
2736                                cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
2737                             }
2738 mark.hamzy    1.27          else
2739                             {
2740 schuur        1.1              throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
2741                             }
2742                          }
2743                    
2744 mark.hamzy    1.27       jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2745 schuur        1.1     }
2746                       Catch(jEnv);
2747 mark.hamzy    1.20 
2748 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
2749                    
2750                       return jCp;
2751 schuur        1.1  }
2752                    
2753                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
2754 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2755                    {
2756                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2757                       CIMValue    *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2758                    
2759 schuur        1.1     cp->setValue(*cv);
2760                    }
2761                    
2762                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
2763 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2764                    {
2765                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2766                    
2767 schuur        1.1     return (jboolean)cp->isArray();
2768                    }
2769                    
2770                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
2771 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jV)
2772                    {
2773                       CIMProperty *cp   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2774                       CIMValue    *cvin = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2775                       CIMValue     cv   = cp->getValue();
2776                    
2777 schuur        1.1     if (cvin->isNull())
2778                          throwCIMException(jEnv,"+++ null cvin value ");
2779                       if (!cv.isArray())
2780                          throwCIMException(jEnv,"+++ not an array ");
2781                       if (cvin->getType()!=cv.getType())
2782                          throwCIMException(jEnv,"+++ type mismatch ");
2783 mark.hamzy    1.20 
2784 schuur        1.1     CIMType type=cv.getType();
2785 mark.hamzy    1.20 
2786 schuur        1.1     switch (type) {
2787                       case CIMTYPE_BOOLEAN: {
2788                             Boolean bo;
2789                             cvin->get(bo);
2790                             Array<Boolean> boarr;
2791                             cv.get(boarr);
2792                             boarr.append(bo);
2793                          }
2794                          break;
2795                       case CIMTYPE_UINT8: {
2796                             Uint8 u8;
2797                             cvin->get(u8);
2798                             Array<Uint8> u8arr;
2799                             cv.get(u8arr);
2800                             u8arr.append(u8);
2801                          }
2802                          break;
2803                       case CIMTYPE_SINT8: {
2804                             Sint8 s8;
2805                             cvin->get(s8);
2806                             Array<Sint8> s8arr;
2807 schuur        1.1           cv.get(s8arr);
2808                             s8arr.append(s8);
2809                          }
2810                          break;
2811                       case CIMTYPE_UINT16: {
2812                             Uint16 u16;
2813                             cvin->get(u16);
2814                             Array<Uint16> u16arr;
2815                             cv.get(u16arr);
2816                             u16arr.append(u16);
2817                          }
2818                          break;
2819                       case CIMTYPE_SINT16: {
2820                             Sint16 s16;
2821                             cvin->get(s16);
2822                             Array<Sint16> s16arr;
2823                             cv.get(s16arr);
2824                             s16arr.append(s16);
2825                          }
2826                          break;
2827                       case CIMTYPE_UINT32: {
2828 schuur        1.1           Uint32 u32;
2829                             cvin->get(u32);
2830                             Array<Uint32> u32arr;
2831                             cv.get(u32arr);
2832                             u32arr.append(u32);
2833                          }
2834                          break;
2835                       case CIMTYPE_SINT32: {
2836                             Sint32 s32;
2837                             cvin->get(s32);
2838                             Array<Sint32> s32arr;
2839                             cv.get(s32arr);
2840                             s32arr.append(s32);
2841                          }
2842                          break;
2843                       case CIMTYPE_UINT64: {
2844                             Uint64 u64;
2845                             cvin->get(u64);
2846                             Array<Uint64> u64arr;
2847                             cv.get(u64arr);
2848                             u64arr.append(u64);
2849 schuur        1.1        }
2850                          break;
2851                       case CIMTYPE_SINT64: {
2852                             Sint64 s64;
2853                             cvin->get(s64);
2854                             Array<Sint64> s64arr;
2855                             cv.get(s64arr);
2856                             s64arr.append(s64);
2857                          }
2858                          break;
2859                       case CIMTYPE_REAL32: {
2860                             Real32 f;
2861                             cvin->get(f);
2862                             Array<Real32> farr;
2863                             cv.get(farr);
2864                             farr.append(f);
2865                          }
2866                          break;
2867                       case CIMTYPE_REAL64: {
2868                             Real64 d;
2869                             cvin->get(d);
2870 schuur        1.1           Array<Real64> darr;
2871                             cv.get(darr);
2872                             darr.append(d);
2873                          }
2874                          break;
2875 mark.hamzy    1.35    case CIMTYPE_CHAR16: {
2876                             Char16 c16;
2877                             cvin->get(c16);
2878                             Array<Char16> c16arr;
2879                             cv.get(c16arr);
2880                             c16arr.append(c16);
2881                          }
2882                          break;
2883 schuur        1.1     case CIMTYPE_STRING: {
2884                             String str;
2885                             cvin->get(str);
2886                             Array<String> strarr;
2887                             cv.get(strarr);
2888                             strarr.append(str);
2889                          }
2890                          break;
2891 mark.hamzy    1.35    case CIMTYPE_DATETIME: {
2892                             CIMDateTime dt;
2893                             cvin->get(dt);
2894                             Array<CIMDateTime> dtarr;
2895                             cv.get(dtarr);
2896                             dtarr.append(dt);
2897                          }
2898                          break;
2899 schuur        1.1     case CIMTYPE_REFERENCE: {
2900                             CIMObjectPath ref;
2901                             cvin->get(ref);
2902                             Array<CIMObjectPath> refarr;
2903                             cv.get(refarr);
2904                             refarr.append(ref);
2905                          }
2906                          break;
2907 dave.sudlik   1.13    case CIMTYPE_OBJECT: {
2908                             CIMObject obj;
2909                             cvin->get(obj);
2910                             Array<CIMObject> objarr;
2911                             cv.get(objarr);
2912                             objarr.append(obj);
2913                          }
2914                          break;
2915 schuur        1.1     default:
2916                          throwCIMException(jEnv,"+++ unsupported type ");
2917                       }
2918                    }
2919                    
2920 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
2921 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ)
2922                    {
2923                       CIMProperty  *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2924                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2925                    
2926 schuur        1.5     cp->addQualifier(*cq);
2927                    }
2928                    
2929 schuur        1.1  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
2930 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2931                    {
2932                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2933                       const String &n   = cp->getName().getString();
2934                       jstring       str = jEnv->NewStringUTF(n.getCString());
2935                    
2936 schuur        1.1     return str;
2937                    }
2938                    
2939 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
2940 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2941                    {
2942                       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2943                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2944                    
2945 schuur        1.5     cp->setName(CIMName(str));
2946 mark.hamzy    1.27 
2947 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
2948                    }
2949                    
2950 schuur        1.1  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
2951 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2952                    {
2953                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2954                    
2955 schuur        1.1     return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
2956                    }
2957                    
2958                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
2959 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jP)
2960                    {
2961                       CIMProperty   *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2962                       const String  &n  = cp->getReferenceClassName().getString();
2963                    
2964 schuur        1.1     jstring str=jEnv->NewStringUTF(n.getCString());
2965 mark.hamzy    1.20 
2966 schuur        1.1     return str;
2967                    }
2968                    
2969                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
2970 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2971                    {
2972 mark.hamzy    1.35    CIMProperty  *cp        = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2973                       String        ref       = cp->getReferenceClassName().getString();
2974                       bool           fSuccess = false;
2975                       int            iJType   = 0;
2976                       _dataType     *type     = 0;
2977                    
2978                       iJType = _dataType::convertCTypeToJavaType (cp->getType(), &fSuccess);
2979                    
2980                       if (fSuccess)
2981                       {
2982                          type = new _dataType (iJType,
2983                                                cp->getArraySize(),
2984                                                ref.size() ? true : false,
2985                                                false,
2986                                                cp->isArray(),
2987                                                ref,
2988                                                true);
2989                       }
2990 mark.hamzy    1.20 
2991                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2992 schuur        1.1  }
2993                    
2994 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
2995 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt)
2996                    {
2997 mark.hamzy    1.35    CIMProperty  *cp       = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2998                       _dataType    *dt       = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2999 mark.hamzy    1.20    CIMValue      val;
3000 mark.hamzy    1.35    bool          fSuccess = false;
3001                       CIMType       cType    = CIMTYPE_BOOLEAN;
3002 mark.hamzy    1.20 
3003 mark.hamzy    1.35    cType = _dataType::convertJavaTypeToCType (dt->_type, &fSuccess);
3004 mark.hamzy    1.20 
3005 mark.hamzy    1.35    if (fSuccess)
3006                       {
3007                          val.setNullValue (cType, dt->_array);
3008 mark.hamzy    1.20 
3009 mark.hamzy    1.35       CIMProperty *np = new CIMProperty (cp->getName (), val);
3010                    
3011                          delete cp;
3012 mark.hamzy    1.20 
3013 mark.hamzy    1.41       DEBUG_ConvertCleanup (jint, jP);
3014                    
3015 mark.hamzy    1.35       return DEBUG_ConvertCToJava (CIMProperty*, jint, np);
3016                       }
3017                       else
3018                       {
3019                          return DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
3020                       }
3021 schuur        1.5  }
3022                    
3023 schuur        1.1  JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
3024 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3025                    {
3026                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
3027                       const String &n   = cp->getName().getString();
3028                       jstring       str = jEnv->NewStringUTF(n.getCString());
3029                    
3030 schuur        1.1     return str;
3031                    }
3032                    
3033                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
3034 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3035                    {
3036                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
3037                    
3038 schuur        1.1     delete cp;
3039 mark.hamzy    1.20 
3040                       DEBUG_ConvertCleanup (jint, jP);
3041 schuur        1.1  }
3042 schuur        1.5  
3043 mark.hamzy    1.39 /*
3044                     * Class:     org_pegasus_jmpi_CIMProperty
3045                     * Method:    _findQualifier
3046                     * Signature: (Ljava/lang/String;)I
3047                     */
3048                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1findQualifier
3049                      (JNIEnv *jEnv, jobject jThs, jint jP, jstring jQualifier)
3050                    {
3051                       CIMProperty  *cp    = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
3052                       const char   *str   = jEnv->GetStringUTFChars (jQualifier, NULL);
3053                       int           index = PEG_NOT_FOUND;
3054                    
3055                       try
3056                       {
3057                          index = cp->findQualifier (CIMName (str));
3058                    
3059                          jEnv->ReleaseStringUTFChars (jQualifier, str);
3060                       }
3061                       Catch (jEnv);
3062                    
3063                       return index;
3064 mark.hamzy    1.39 }
3065                    
3066                    /*
3067                     * Class:     org_pegasus_jmpi_CIMProperty
3068                     * Method:    _getQualifier
3069                     * Signature: (I)I
3070                     */
3071                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getQualifier
3072                      (JNIEnv *jEnv, jobject jThs, jint jP, jint jIndex)
3073                    {
3074                       CIMProperty  *cp        = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
3075                       CIMQualifier *cq        = NULL;
3076                       CIMQualifier  qualifier;
3077                    
3078                       try
3079                       {
3080                          qualifier = cp->getQualifier ((Uint32)jIndex);
3081                          cq = new CIMQualifier (qualifier);
3082                       }
3083                       Catch (jEnv);
3084                    
3085 mark.hamzy    1.39    return DEBUG_ConvertCToJava (CIMQualifier *, jint, cq);
3086                    }
3087                    
3088                    
3089 schuur        1.5  // -------------------------------------
3090                    // ---
3091                    // -     CIMQualifierType
3092                    // ---
3093                    // -------------------------------------
3094                    
3095                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
3096 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
3097                    {
3098 schuur        1.5     CIMQualifierDecl *qual = new CIMQualifierDecl();
3099 mark.hamzy    1.20 
3100                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, qual);
3101 schuur        1.5  }
3102                    
3103                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
3104 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3105                    {
3106                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3107                    
3108 schuur        1.5     delete qt;
3109 mark.hamzy    1.20 
3110                       DEBUG_ConvertCleanup (jint, jQ);
3111 schuur        1.5  }
3112                    
3113                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
3114 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3115                    {
3116                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3117                       const String     &n   = qt->getName().getString();
3118                       jstring           str = jEnv->NewStringUTF(n.getCString());
3119                    
3120 schuur        1.5     return str;
3121                    }
3122                    
3123 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
3124 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN)
3125                    {
3126 mark.hamzy    1.24    CIMQualifierDecl *qt   = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3127                       const char       *str  = jEnv->GetStringUTFChars(jN,NULL);
3128                       jint              jret = 0;
3129 mark.hamzy    1.20 
3130 schuur        1.6     if (qt->isUninitialized())
3131 mark.hamzy    1.24    {
3132                          CIMQualifierDecl *nqt = new CIMQualifierDecl(CIMName(str),CIMValue(),CIMScope());
3133                    
3134                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
3135                       }
3136 mark.hamzy    1.20    else
3137 mark.hamzy    1.24    {
3138 mark.hamzy    1.20       qt->setName(CIMName(str));
3139 mark.hamzy    1.24 
3140                          CIMQualifierDecl *nqt = new CIMQualifierDecl(*qt);
3141                    
3142                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
3143                       }
3144                    
3145 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
3146 mark.hamzy    1.20 
3147 mark.hamzy    1.24    return jret;
3148 schuur        1.5  }
3149                    
3150                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
3151 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
3152                    {
3153                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3154                       CIMValue         *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3155                    
3156 schuur        1.5     qt->setValue(*cv);
3157                    }
3158                    
3159 schuur        1.1  // -------------------------------------
3160                    // ---
3161                    // -     CIMQualifier
3162                    // ---
3163                    // -------------------------------------
3164                    
3165 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
3166 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
3167                    {
3168                       const char   *str  = jEnv->GetStringUTFChars(jN,NULL);
3169 schuur        1.5     CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue());
3170 mark.hamzy    1.20 
3171 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
3172 mark.hamzy    1.20 
3173                       return DEBUG_ConvertCToJava (CIMQualifier*, jint, qual);
3174 schuur        1.5  }
3175                    
3176 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
3177 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3178                    {
3179                       CIMQualifier *cq=DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3180                    
3181 schuur        1.1     delete cq;
3182 mark.hamzy    1.20 
3183                       DEBUG_ConvertCleanup (jint, jQ);
3184 schuur        1.1  }
3185                    
3186 schuur        1.5  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
3187 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3188                    {
3189                       CIMQualifier *cq  = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3190                       const String &n   = cq->getName().getString();
3191                       jstring       str = jEnv->NewStringUTF(n.getCString());
3192                    
3193 schuur        1.5     return str;
3194                    }
3195                    
3196                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
3197 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3198                    {
3199                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3200                       CIMValue     *cv = new CIMValue(cq->getValue());
3201                    
3202                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3203 schuur        1.5  }
3204                    
3205                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
3206 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
3207                    {
3208                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3209                       CIMValue     *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3210                    
3211 schuur        1.5     cq->setValue(*cv);
3212                    }
3213                    
3214 schuur        1.1  // -------------------------------------
3215                    // ---
3216                    // -		CIMDateTime
3217                    // ---
3218                    // -------------------------------------
3219                    
3220                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
3221 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
3222                    {
3223                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
3224                       CIMDateTime *dt  = 0;
3225                    
3226 schuur        1.1     if (strlen(str)==0)
3227                          dt=new CIMDateTime();
3228                       else
3229                          dt=new CIMDateTime(String(str));
3230 mark.hamzy    1.27 
3231 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
3232 mark.hamzy    1.20 
3233                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
3234 schuur        1.1  }
3235                    
3236                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
3237 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
3238                    {
3239                       CIMDateTime *dt = new CIMDateTime(CIMDateTime::getCurrentDateTime ());
3240                    
3241                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
3242 schuur        1.1  }
3243                    
3244                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
3245 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jC, jint jD)
3246                    {
3247                       CIMDateTime *ct = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jC);
3248                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jD);
3249                    
3250 schuur        1.1     return (jboolean)(ct->getDifference(*ct, *dt)>0);
3251                    }
3252                    
3253                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
3254 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
3255                    {
3256                       CIMDateTime *cdt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
3257                    
3258 schuur        1.1     delete cdt;
3259 mark.hamzy    1.20 
3260                       DEBUG_ConvertCleanup (jint, jDT);
3261 schuur        1.1  }
3262                    
3263                    // -------------------------------------
3264                    // ---
3265                    // -		CIMMethod
3266                    // ---
3267                    // -------------------------------------
3268                    
3269                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
3270 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
3271                    {
3272                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
3273                    
3274 mark.hamzy    1.41    return DEBUG_ConvertCToJava (CIMType *, jint, new CIMType (cm->getType()));
3275 schuur        1.1  }
3276                    
3277                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
3278 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
3279                    {
3280                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
3281                    
3282 schuur        1.1     delete cm;
3283 mark.hamzy    1.20 
3284                       DEBUG_ConvertCleanup (jint, jM);
3285 schuur        1.1  }
3286                    
3287                    // -------------------------------------
3288                    // ---
3289                    // -		CIMValue
3290                    // ---
3291                    // -------------------------------------
3292                    
3293                    
3294                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
3295 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned)
3296                    {
3297                       CIMValue *cv = NULL;
3298                    
3299                       if (notSigned)
3300                          cv=new CIMValue((Uint8)jb);
3301                       else
3302                          cv=new CIMValue((Sint8)jb);
3303                    
3304                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3305 schuur        1.1  }
3306                    
3307                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
3308 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned)
3309                    {
3310                       CIMValue *cv = NULL;
3311                    
3312                       if (notSigned)
3313                          cv=new CIMValue((Uint16)js);
3314                       else
3315                          cv=new CIMValue((Sint16)js);
3316                    
3317                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3318 schuur        1.1  }
3319                    
3320 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1makeInt
3321 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned)
3322                    {
3323                       CIMValue *cv = NULL;
3324                    
3325                       if (notSigned)
3326                          cv = new CIMValue((Uint32)ji);
3327                       else
3328                          cv = new CIMValue((Sint32)ji);
3329                    
3330                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3331 schuur        1.1  }
3332                    
3333                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
3334 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned)
3335                    {
3336                       CIMValue *cv = NULL;
3337                    
3338                       if (notSigned)
3339                          cv=new CIMValue((Uint64)jl);
3340                       else
3341                          cv=new CIMValue((Sint64)jl);
3342                    
3343                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3344 schuur        1.1  }
3345                    
3346                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
3347 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jfloat jF)
3348                    {
3349                       CIMValue *cv = new CIMValue(jF);
3350                    
3351                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3352 schuur        1.1  }
3353                    
3354                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
3355 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jdouble jD)
3356                    {
3357                       CIMValue *cv = new CIMValue(jD);
3358                    
3359                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3360 schuur        1.1  }
3361                    
3362                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
3363 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jS)
3364                    {
3365                       const char *str = jEnv->GetStringUTFChars(jS,NULL);
3366                       CIMValue   *cv  = new CIMValue(String(str));
3367                    
3368 schuur        1.1     jEnv->ReleaseStringUTFChars(jS,str);
3369 mark.hamzy    1.20 
3370                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3371 schuur        1.1  }
3372                    
3373 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1cop
3374 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jR)
3375                    {
3376                       CIMObjectPath *ref = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jR);
3377                       CIMValue      *cv  = new CIMValue(*ref);
3378                    
3379                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3380 schuur        1.1  }
3381                    
3382                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
3383 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
3384                    {
3385                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
3386                       CIMValue    *cv = new CIMValue(*dt);
3387                    
3388                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3389 schuur        1.1  }
3390                    
3391 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16
3392                          (JNIEnv *jEnv, jobject jThs, jchar jChar16)
3393                    {
3394                       Char16       c16 (jChar16);
3395                       CIMValue    *cv  = new CIMValue(c16);
3396                    
3397                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3398                    }
3399                    
3400                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1object
3401                          (JNIEnv *jEnv, jobject jThs, jint jO)
3402                    {
3403                       CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jO);
3404                       CIMValue  *cv = new CIMValue(*co);
3405                    
3406                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3407                    }
3408                    
3409 schuur        1.1  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
3410 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3411                    {
3412                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
3413                    
3414 schuur        1.1     return (jboolean)cv->isArray();
3415                    }
3416                    
3417                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
3418 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jboolean jB)
3419                    {
3420                       CIMValue *cv = new CIMValue((Boolean)jB);
3421                    
3422                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3423 schuur        1.1  }
3424                    
3425                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
3426 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned)
3427                    {
3428                       CIMValue *cv  = NULL;
3429                       jboolean  b;
3430                       jsize     len = jEnv->GetArrayLength(jshortA);
3431                       jshort   *jsA = jEnv->GetShortArrayElements(jshortA,&b);
3432                    
3433 schuur        1.1     if (notSigned) {
3434                          Array<Uint8> u8;
3435                          for (jsize i=0;i<len;i++)
3436                             u8.append((Uint8)jsA[i]);
3437                          cv=new CIMValue(u8);
3438                       }
3439                       else {
3440                          Array<Sint8> s8;
3441                          for (jsize i=0;i<len;i++)
3442                             s8.append((Sint8)jsA[i]);
3443                          cv=new CIMValue(s8);
3444                       }
3445 mark.hamzy    1.20 
3446 mark.hamzy    1.35    jEnv->ReleaseShortArrayElements(jshortA, jsA, len);
3447                    
3448 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3449 schuur        1.1  }
3450                    
3451                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
3452 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned)
3453                    {
3454                       CIMValue *cv  = NULL;
3455                       jboolean  b;
3456                       jsize     len = jEnv->GetArrayLength(jintA);
3457                       jint     *jiA = jEnv->GetIntArrayElements(jintA,&b);
3458                    
3459 schuur        1.1     if (notSigned) {
3460                          Array<Uint16> u16;
3461                          for (jsize i=0;i<len;i++)
3462                             u16.append((Uint16)jiA[i]);
3463                          cv=new CIMValue(u16);
3464                       }
3465                       else {
3466                          Array<Sint16> s16;
3467                          for (jsize i=0;i<len;i++)
3468                             s16.append((Sint16)jiA[i]);
3469                          cv=new CIMValue(s16);
3470                       }
3471 mark.hamzy    1.20 
3472 mark.hamzy    1.35    jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3473                    
3474 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3475 schuur        1.1  }
3476                    
3477                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
3478 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3479                    {
3480                       CIMValue *cv  = NULL;
3481                       jboolean  b;
3482                       jsize     len = jEnv->GetArrayLength(jlongA);
3483                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3484                    
3485 schuur        1.1     if (notSigned) {
3486                          Array<Uint32> u32;
3487                          for (jsize i=0;i<len;i++)
3488                             u32.append((Uint32)jlA[i]);
3489                          cv=new CIMValue(u32);
3490                       }
3491                       else {
3492                          Array<Sint32> s32;
3493                          for (jsize i=0;i<len;i++)
3494                             s32.append((Sint32)jlA[i]);
3495                          cv=new CIMValue(s32);
3496                       }
3497 mark.hamzy    1.20 
3498 mark.hamzy    1.35    jEnv->ReleaseLongArrayElements(jlongA, jlA, len);
3499                    
3500 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3501 schuur        1.1  }
3502                    
3503                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
3504 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3505                    {
3506                       CIMValue *cv  = NULL;
3507                       jboolean  b;
3508                       jsize     len = jEnv->GetArrayLength(jlongA);
3509                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3510                    
3511 schuur        1.1     if (notSigned) {
3512                          Array<Uint64> u64;
3513                          for (jsize i=0;i<len;i++)
3514                             u64.append((Uint64)jlA[i]);
3515                          cv=new CIMValue(u64);
3516                       }
3517                       else {
3518                          Array<Sint64> s64;
3519                          for (jsize i=0;i<len;i++)
3520                             s64.append((Sint64)jlA[i]);
3521                          cv=new CIMValue(s64);
3522                       }
3523 mark.hamzy    1.20 
3524 mark.hamzy    1.35    jEnv->ReleaseLongArrayElements(jlongA, jlA, len);
3525                    
3526 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3527 schuur        1.1  }
3528                    
3529                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
3530 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA)
3531                    {
3532                       CIMValue     *cv   = NULL;
3533                       jsize         len  = jEnv->GetArrayLength(jstringA);
3534 schuur        1.1     Array<String> strA;
3535                    
3536                       for (jsize i=0;i<len;i++) {
3537 mark.hamzy    1.27       jstring     jsA = (jstring)jEnv->GetObjectArrayElement(jstringA,i);
3538                          const char *str = jEnv->GetStringUTFChars(jsA,NULL);
3539                    
3540 schuur        1.1        strA.append(String(str));
3541 mark.hamzy    1.27 
3542 schuur        1.1        jEnv->ReleaseStringUTFChars(jsA,str);
3543                       }
3544                    
3545 mark.hamzy    1.27    cv = new CIMValue(strA);
3546 mark.hamzy    1.20 
3547                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3548 schuur        1.1  }
3549                    
3550                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
3551 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA)
3552                    {
3553                       CIMValue       *cv  = NULL;
3554                       jboolean        b;
3555                       jsize           len = jEnv->GetArrayLength(jboolA);
3556                       jboolean       *jbA = jEnv->GetBooleanArrayElements(jboolA,&b);
3557                       Array<Boolean>  bA;
3558                    
3559 schuur        1.1     for (jsize i=0;i<len;i++)
3560                          bA.append((Boolean)jbA[i]);
3561                       cv=new CIMValue(bA);
3562 mark.hamzy    1.20 
3563 mark.hamzy    1.35    jEnv->ReleaseBooleanArrayElements(jboolA, jbA, len);
3564                    
3565                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3566                    }
3567                    
3568                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1floatArray
3569                      (JNIEnv *jEnv, jobject jThs, jfloatArray jfloatA)
3570                    {
3571                       CIMValue     *cv  = NULL;
3572                       jboolean      b;
3573                       jsize         len = jEnv->GetArrayLength(jfloatA);
3574                       jfloat       *jfA = jEnv->GetFloatArrayElements(jfloatA,&b);
3575                       Array<float>  fA;
3576                    
3577                       for (jsize i=0;i<len;i++)
3578                          fA.append((float)jfA[i]);
3579                       cv=new CIMValue(fA);
3580                    
3581                       jEnv->ReleaseFloatArrayElements(jfloatA, jfA, len);
3582                    
3583                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3584 mark.hamzy    1.35 }
3585                    
3586                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1doubleArray
3587                      (JNIEnv *jEnv, jobject jThs, jdoubleArray jdoubleA)
3588                    {
3589                       CIMValue      *cv  = NULL;
3590                       jboolean       b;
3591                       jsize          len = jEnv->GetArrayLength(jdoubleA);
3592                       jdouble       *jdA = jEnv->GetDoubleArrayElements(jdoubleA,&b);
3593                       Array<double>  dA;
3594                    
3595                       for (jsize i=0;i<len;i++)
3596                          dA.append((double)jdA[i]);
3597                       cv=new CIMValue(dA);
3598                    
3599                       jEnv->ReleaseDoubleArrayElements(jdoubleA, jdA, len);
3600                    
3601 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3602 schuur        1.1  }
3603                    
3604 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1copArray
3605 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3606                    {
3607                       CIMValue             *cv  = NULL;
3608                       jboolean              b;
3609                       jsize                 len = jEnv->GetArrayLength(jintA);
3610                       jint                 *jiA = jEnv->GetIntArrayElements(jintA,&b);
3611                       Array<CIMObjectPath>  cA;
3612                    
3613 schuur        1.1     for (jsize i=0;i<len;i++)
3614                          cA.append(*((CIMObjectPath*)jiA[i]));
3615                       cv=new CIMValue(cA);
3616 mark.hamzy    1.20 
3617 mark.hamzy    1.35    jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3618                    
3619                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3620                    }
3621                    
3622                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetimeArray
3623                          (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3624                    {
3625                       CIMValue           *cv  = NULL;
3626                       jboolean            b;
3627                       jsize               len = jEnv->GetArrayLength(jintA);
3628                       jint               *jiA = jEnv->GetIntArrayElements(jintA,&b);
3629                       Array<CIMDateTime>  cA;
3630                    
3631                       for (jsize i=0;i<len;i++)
3632                          cA.append(*((CIMDateTime*)jiA[i]));
3633                       cv=new CIMValue(cA);
3634                    
3635                       jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3636                    
3637                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3638 mark.hamzy    1.35 }
3639                    
3640                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1objectArray
3641                          (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3642                    {
3643                       CIMValue           *cv  = NULL;
3644                       jboolean            b;
3645                       jsize               len = jEnv->GetArrayLength(jintA);
3646                       jint               *jiA = jEnv->GetIntArrayElements(jintA,&b);
3647                       Array<CIMObject>    cA;
3648                    
3649                       for (jsize i=0;i<len;i++)
3650                          cA.append(*((CIMObject*)jiA[i]));
3651                       cv=new CIMValue(cA);
3652                    
3653                       jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3654                    
3655                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3656                    }
3657                    
3658                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16Array
3659 mark.hamzy    1.35       (JNIEnv *jEnv, jobject jThs, jcharArray jcharA)
3660                    {
3661                       CIMValue      *cv  = NULL;
3662                       jboolean       b;
3663                       jsize          len = jEnv->GetArrayLength(jcharA);
3664                       jchar         *jcA = jEnv->GetCharArrayElements(jcharA,&b);
3665                       Array<Char16>  cA;
3666                    
3667                       for (jsize i=0;i<len;i++)
3668                          cA.append(Char16 (jcA[i]));
3669                       cv=new CIMValue(cA);
3670                    
3671                       jEnv->ReleaseCharArrayElements(jcharA, jcA, len);
3672                    
3673 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3674 schuur        1.1  }
3675                    
3676                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
3677 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3678                    {
3679 mark.hamzy    1.35    CIMValue *cv       = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
3680                       bool      fSuccess = false;
3681                       int       iJType   = 0;
3682                    
3683                       iJType = _dataType::convertCTypeToJavaType (cv->getType(), &fSuccess);
3684 mark.hamzy    1.20 
3685 mark.hamzy    1.35    return DEBUG_ConvertCToJava (int, jint, iJType);
3686 schuur        1.1  }
3687                    
3688                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
3689 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3690                    {
3691                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3692                    
3693 schuur        1.1     return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
3694                    }
3695                    
3696                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
3697 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3698                    {
3699 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
3700                    
3701 mark.hamzy    1.20    CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3702                    
3703 mark.hamzy    1.35    if (cv->isNull ())
3704 schuur        1.1        return NULL;
3705 mark.hamzy    1.20 
3706 mark.hamzy    1.35    CIMType type = cv->getType ();
3707 schuur        1.1  
3708 mark.hamzy    1.35    if (!cv->isArray ())
3709                       {
3710                          switch (type)
3711                          {
3712 schuur        1.1        case CIMTYPE_BOOLEAN:
3713                             Boolean bo;
3714                             cv->get(bo);
3715 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,
3716                                                     JMPIjvm::jv.BooleanNewZ,
3717                                                     bo);
3718 schuur        1.1        case CIMTYPE_SINT8:
3719                             Sint8 s8;
3720                             cv->get(s8);
3721 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.ByteClassRef,
3722                                                     JMPIjvm::jv.ByteNewB,
3723                                                     s8);
3724 schuur        1.1        case CIMTYPE_UINT8:
3725                             Uint8 u8;
3726                             cv->get(u8);
3727 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,
3728                                                     JMPIjvm::jv.UnsignedInt8NewS,
3729                                                     u8);
3730 schuur        1.1        case CIMTYPE_SINT16:
3731                             Sint16 s16;
3732                             cv->get(s16);
3733 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.ShortClassRef,
3734                                                     JMPIjvm::jv.ShortNewS,
3735                                                     s16);
3736 schuur        1.1        case CIMTYPE_UINT16:
3737                             Uint16 u16;
3738                             cv->get(u16);
3739 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,
3740                                                     JMPIjvm::jv.UnsignedInt16NewI,
3741                                                     u16);
3742 schuur        1.1        case CIMTYPE_SINT32:
3743                             Sint32 s32;
3744                             cv->get(s32);
3745 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,
3746                                                     JMPIjvm::jv.IntegerNewI,
3747                                                     s32);
3748 schuur        1.1        case CIMTYPE_UINT32:
3749                             Uint32 u32;
3750                             cv->get(u32);
3751 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,
3752                                                     JMPIjvm::jv.UnsignedInt32NewJ,
3753                                                     u32);
3754 schuur        1.1        case CIMTYPE_SINT64:
3755                             Sint64 s64;
3756                             cv->get(s64);
3757 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.LongClassRef,
3758                                                     JMPIjvm::jv.LongNewJ,
3759                                                     s64);
3760                          case CIMTYPE_UINT64:
3761                          {
3762                             Uint64 u64;
3763                             cv->get(u64);
3764                             jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef,
3765                                                                          JMPIjvm::jv.BigIntegerValueOf,
3766                                                                          u64);
3767                             return jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
3768                                                     JMPIjvm::jv.UnsignedInt64NewBi,
3769                                                     jBIG);
3770                          }
3771 schuur        1.1        case CIMTYPE_REAL32:
3772                             float f;
3773                             cv->get(f);
3774 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.FloatClassRef,
3775                                                     JMPIjvm::jv.FloatNewF,
3776                                                     f);
3777 schuur        1.1        case CIMTYPE_REAL64:
3778                             double d;
3779                             cv->get(d);
3780 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,
3781                                                     JMPIjvm::jv.DoubleNewD,
3782                                                     d);
3783                          case CIMTYPE_STRING:
3784                          {
3785                             String s;
3786                             cv->get(s);
3787                             return jEnv->NewStringUTF(s.getCString());
3788                          }
3789                          case CIMTYPE_REFERENCE:
3790                          {
3791                             CIMObjectPath ref;
3792                             cv->get(ref);
3793                             jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref));
3794                             return jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
3795                                                     JMPIjvm::jv.CIMObjectPathNewI,
3796                                                     jOp);
3797                          }
3798                          case CIMTYPE_CHAR16:
3799                          {
3800                             Char16 c16;
3801 mark.hamzy    1.35          cv->get(c16);
3802                             return jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,
3803                                                     JMPIjvm::jv.CharacterNewC,
3804                                                     (jchar)c16);
3805                          }
3806                          case CIMTYPE_DATETIME:
3807                          {
3808                             CIMDateTime dt;
3809                             cv->get(dt);
3810                             jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt));
3811                             return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
3812                                                     JMPIjvm::jv.CIMDateTimeNewI,
3813                                                     jDT);
3814                          }
3815                          case CIMTYPE_OBJECT:
3816                          {
3817                             CIMObject co;
3818                             cv->get(co);
3819                             if (co.isClass ())
3820                             {
3821                                jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co));
3822 mark.hamzy    1.35 
3823                                return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
3824                                                        JMPIjvm::jv.CIMObjectNewIZ,
3825                                                        jCC,
3826                                                        (jboolean)true);
3827 schuur        1.1           }
3828 mark.hamzy    1.35          else
3829                             {
3830                                jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co));
3831                    
3832                                return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
3833                                                        JMPIjvm::jv.CIMObjectNewIZ,
3834                                                        jCI,
3835                                                        (jboolean)false);
3836 schuur        1.1           }
3837 mark.hamzy    1.35       }
3838 schuur        1.1        default:
3839 mark.hamzy    1.17          throwCIMException(jEnv,"+++ unsupported type: ");
3840 schuur        1.1        }
3841                       }
3842 mark.hamzy    1.35    else
3843                       {
3844                          switch (type)
3845                          {
3846                          case CIMTYPE_BOOLEAN:
3847                          {
3848                             Array<Boolean> bo;
3849                    
3850                             cv->get(bo);
3851                    
3852                             int          s         = bo.size();
3853                             jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray (s,
3854                                                                                          JMPIjvm::jv.BooleanClassRef,
3855                                                                                          0);
3856                    
3857                             for (int i=0; i < s; i++)
3858                                jEnv->SetObjectArrayElement(jbooleanA,
3859                                                            i,
3860                                                            jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,
3861                                                                             JMPIjvm::jv.BooleanNewZ,
3862                                                                             bo[i]));
3863 mark.hamzy    1.35          return jbooleanA;
3864                          }
3865                          case CIMTYPE_SINT8:
3866                          {
3867                             Array<Sint8> s8;
3868                    
3869                             cv->get(s8);
3870                    
3871                             int          s      = s8.size();
3872                             jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray (s,
3873                                                                                       JMPIjvm::jv.ByteClassRef,
3874                                                                                       0);
3875                    
3876                             for (int i=0; i < s; i++)
3877                                jEnv->SetObjectArrayElement (jbyteA,
3878                                                             i,
3879                                                             jEnv->NewObject (JMPIjvm::jv.ByteClassRef,
3880                                                                              JMPIjvm::jv.ByteNewB,
3881                                                                              s8[i]));
3882                             return jbyteA;
3883                          }
3884 mark.hamzy    1.35       case CIMTYPE_UINT8:
3885                          {
3886                             Array<Uint8> u8;
3887                    
3888                             cv->get(u8);
3889                    
3890                             int          s       = u8.size();
3891                             jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,
3892                                                                                        JMPIjvm::jv.UnsignedInt8ClassRef,
3893                                                                                        0);
3894                             for (int i=0; i < s; i++)
3895                                jEnv->SetObjectArrayElement (jshortA,
3896                                                             i,
3897                                                             jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,
3898                                                                              JMPIjvm::jv.UnsignedInt8NewS,
3899                                                                              u8[i]));
3900                             return jshortA;
3901                          }
3902                          case CIMTYPE_SINT16:
3903                          {
3904                             Array<Sint16> s16;
3905 mark.hamzy    1.35 
3906                             cv->get(s16);
3907                    
3908                             int          s       = s16.size();
3909                             jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,
3910                                                                                        JMPIjvm::jv.ShortClassRef,
3911                                                                                        0);
3912                    
3913 mark.hamzy    1.36          for (int i=0; i < s; i++)
3914 mark.hamzy    1.35             jEnv->SetObjectArrayElement (jshortA,
3915                                                             i,
3916                                                             jEnv->NewObject (JMPIjvm::jv.ShortClassRef,
3917                                                                              JMPIjvm::jv.ShortNewS,
3918                                                                              s16[i]));
3919                             return jshortA;
3920                          }
3921                          case CIMTYPE_UINT16:
3922                          {
3923                             Array<Uint16> u16;
3924                    
3925                             cv->get(u16);
3926                    
3927                             int          s     = u16.size();
3928                             jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,
3929                                                                                      JMPIjvm::jv.UnsignedInt16ClassRef,
3930                                                                                      0);
3931                    
3932                             for (int i=0; i < s; i++)
3933                                jEnv->SetObjectArrayElement (jintA,
3934                                                             i,
3935 mark.hamzy    1.35                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,
3936                                                                              JMPIjvm::jv.UnsignedInt16NewI,
3937                                                                              u16[i]));
3938                             return jintA;
3939                          }
3940                          case CIMTYPE_SINT32:
3941                          {
3942                             Array<Sint32> s32;
3943                    
3944                             cv->get(s32);
3945                    
3946                             int          s     = s32.size();
3947                             jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,
3948                                                                                      JMPIjvm::jv.IntegerClassRef,
3949                                                                                      0);
3950                    
3951 mark.hamzy    1.36          for (int i=0; i < s; i++)
3952 mark.hamzy    1.35             jEnv->SetObjectArrayElement (jintA,
3953                                                             i,
3954                                                             jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,
3955                                                                              JMPIjvm::jv.IntegerNewI,
3956                                                                              s32[i]));
3957                             return jintA;
3958                          }
3959                          case CIMTYPE_UINT32:
3960                          {
3961                             Array<Uint32> u32;
3962                    
3963                             cv->get(u32);
3964                    
3965                             int          s      = u32.size();
3966                             jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s,
3967                                                                                       JMPIjvm::jv.UnsignedInt32ClassRef,
3968                                                                                       0);
3969                    
3970                             for (int i=0; i < s; i++)
3971                                jEnv->SetObjectArrayElement (jlongA,
3972                                                             i,
3973 mark.hamzy    1.35                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,
3974                                                                              JMPIjvm::jv.UnsignedInt32NewJ,
3975                                                                              u32[i]));
3976                             return jlongA;
3977                          }
3978                          case CIMTYPE_SINT64:
3979                          {
3980                             Array<Sint64> s64;
3981                    
3982                             cv->get(s64);
3983                    
3984                             int          s      = s64.size();
3985                             jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s,
3986                                                                                       JMPIjvm::jv.LongClassRef,
3987                                                                                       0);
3988                    
3989                             for (int i=0; i < s; i++)
3990                                jEnv->SetObjectArrayElement (jlongA,
3991                                                             i,
3992                                                             jEnv->NewObject (JMPIjvm::jv.LongClassRef,
3993                                                                              JMPIjvm::jv.LongNewJ,
3994 mark.hamzy    1.35                                                           s64[i]));
3995                             return jlongA;
3996                          }
3997 schuur        1.1        case CIMTYPE_UINT64:
3998 mark.hamzy    1.35       {
3999                             Array<Uint64> u64;
4000                    
4001                             cv->get(u64);
4002                    
4003                             int          s     = u64.size();
4004                             jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray (s,
4005                                                                                      JMPIjvm::jv.UnsignedInt64ClassRef,
4006                                                                                      0);
4007                    
4008                             for (int i=0; i < s; i++)
4009                             {
4010                                jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef,
4011                                                                             JMPIjvm::jv.BigIntegerValueOf,
4012                                                                             u64[i]);
4013                    
4014                                jEnv->SetObjectArrayElement (ju64A,
4015                                                             i,
4016                                                             jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
4017                                                                              JMPIjvm::jv.UnsignedInt64NewBi,
4018                                                                              jBIG));
4019 schuur        1.1           }
4020 mark.hamzy    1.35          return ju64A;
4021                          }
4022                          case CIMTYPE_REAL32:
4023                          {
4024                             Array<Real32> r32;
4025                    
4026                             cv->get(r32);
4027                    
4028                             int          s       = r32.size();
4029                             jobjectArray jfloatA = (jobjectArray)jEnv->NewObjectArray (s,
4030                                                                                        JMPIjvm::jv.FloatClassRef,
4031                                                                                        0);
4032                    
4033                             for (int i=0; i < s; i++)
4034                                jEnv->SetObjectArrayElement (jfloatA,
4035                                                             i,
4036                                                             jEnv->NewObject (JMPIjvm::jv.FloatClassRef,
4037                                                                              JMPIjvm::jv.FloatNewF,
4038                                                                              r32[i]));
4039                             return jfloatA;
4040                          }
4041 mark.hamzy    1.35       case CIMTYPE_REAL64:
4042                          {
4043                             Array<Real64> r64;
4044                    
4045                             cv->get(r64);
4046                    
4047                             int          s        = r64.size();
4048                             jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray (s,
4049                                                                                         JMPIjvm::jv.DoubleClassRef,
4050                                                                                         0);
4051                    
4052                             for (int i=0; i < s; i++)
4053                                jEnv->SetObjectArrayElement (jdoubleA,
4054                                                             i,
4055                                                             jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,
4056                                                                              JMPIjvm::jv.DoubleNewD,
4057                                                                              r64[i]));
4058                             return jdoubleA;
4059                          }
4060                          case CIMTYPE_STRING:
4061                          {
4062 mark.hamzy    1.35          Array<String> str;
4063                    
4064                             cv->get(str);
4065                    
4066                             int          s        = str.size();
4067                             jobjectArray jstringA = (jobjectArray)jEnv->NewObjectArray (s,
4068                                                                                         JMPIjvm::jv.StringClassRef,
4069                                                                                         0);
4070                    
4071                             for (int i=0; i < s; i++)
4072                                jEnv->SetObjectArrayElement (jstringA,
4073                                                             i,
4074                                                             jEnv->NewStringUTF (str[i].getCString()));
4075                             return jstringA;
4076                          }
4077                          case CIMTYPE_REFERENCE:
4078                          {
4079                             Array<CIMObjectPath> ref;
4080                    
4081                             cv->get(ref);
4082                    
4083 mark.hamzy    1.35          int          s     = ref.size();
4084                             jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray (s,
4085                                                                                      JMPIjvm::jv.CIMObjectPathClassRef,
4086                                                                                      0);
4087                    
4088                             for (int i=0; i < s; i++)
4089                             {
4090                                jint jOP = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref[i]));
4091                    
4092                                jEnv->SetObjectArrayElement (jrefA,
4093                                                             i,
4094                                                             jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
4095                                                                              JMPIjvm::jv.CIMObjectPathNewI,
4096                                                                              jOP));
4097 schuur        1.1           }
4098 mark.hamzy    1.35          return jrefA;
4099                          }
4100 schuur        1.1        case CIMTYPE_CHAR16:
4101 mark.hamzy    1.35       {
4102                             Array<Char16> c16;
4103                    
4104                             cv->get(c16);
4105                    
4106                             int          s     = c16.size();
4107                             jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray (s,
4108                                                                                      JMPIjvm::jv.CharacterClassRef,
4109                                                                                      0);
4110                    
4111                             for (int i=0; i < s; i++)
4112                                jEnv->SetObjectArrayElement (jc16A,
4113                                                             i,
4114                                                             jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,
4115                                                                              JMPIjvm::jv.CharacterNewC,
4116                                                                              (jchar)c16[i]));
4117                    
4118                             return jc16A;
4119                          }
4120 schuur        1.1        case CIMTYPE_DATETIME:
4121 mark.hamzy    1.35       {
4122                             Array<CIMDateTime> dt;
4123                    
4124                             cv->get(dt);
4125                    
4126                             int          s    = dt.size();
4127                             jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray (s,
4128                                                                                     JMPIjvm::jv.CIMDateTimeClassRef,
4129                                                                                     0);
4130                    
4131                             for (int i=0; i < s; i++)
4132                             {
4133                                jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt[i]));
4134                    
4135                                jEnv->SetObjectArrayElement (jdtA,
4136                                                             i,
4137                                                             jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
4138                                                                              JMPIjvm::jv.CIMDateTimeNewI,
4139                                                                              jDT));
4140                             }
4141                             return jdtA;
4142 mark.hamzy    1.35       }
4143 dave.sudlik   1.13       case CIMTYPE_OBJECT:
4144 mark.hamzy    1.35       {
4145                             Array<CIMObject> co;
4146                    
4147                             cv->get(co);
4148                    
4149                             int          s    = co.size();
4150                             jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray (s,
4151                                                                                     JMPIjvm::jv.CIMObjectClassRef,
4152                                                                                     0);
4153                    
4154                             for (int i=0; i < s; i++)
4155                             {
4156                                if (co[i].isClass ())
4157                                {
4158                                   jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co[i]));
4159                    
4160                                   jEnv->SetObjectArrayElement (jcoA,
4161                                                                i,
4162                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
4163                                                                                 JMPIjvm::jv.CIMObjectNewIZ,
4164                                                                                 jCC,
4165 mark.hamzy    1.35                                                              (jboolean)true));
4166                                }
4167                                else
4168                                {
4169                                   jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co[i]));
4170                    
4171                                   jEnv->SetObjectArrayElement (jcoA,
4172                                                                i,
4173                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
4174                                                                                 JMPIjvm::jv.CIMObjectNewIZ,
4175                                                                                 jCI,
4176                                                                                 (jboolean)false));
4177                                }
4178                             }
4179                             return jcoA;
4180                          }
4181 schuur        1.1        default:
4182 mark.hamzy    1.35          throwCIMException(jEnv,"+++ unsupported type: ");
4183 schuur        1.1        }
4184                       }
4185 mark.hamzy    1.20 
4186 schuur        1.1     return NULL;
4187                    }
4188                    
4189                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
4190 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
4191                    {
4192                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
4193                    
4194                       delete cv;
4195                    
4196                       DEBUG_ConvertCleanup (jint, jV);
4197 schuur        1.1  }
4198                    
4199                    // -------------------------------------
4200                    // ---
4201                    // -		CIMNameSpace
4202                    // ---
4203                    // -------------------------------------
4204                    
4205                    _nameSpace::_nameSpace() {
4206                       port_=0;
4207                       hostName_=System::getHostName();
4208                       nameSpace_="root/cimv2";
4209                    }
4210                    
4211                    _nameSpace::_nameSpace(String hn) {
4212                       port_=0;
4213                       hostName_=hn;
4214                       nameSpace_="root/cimv2";
4215                    }
4216                    
4217                    _nameSpace::_nameSpace(String hn, String ns) {
4218 schuur        1.1      port_=0;
4219                        hostName_=hn;
4220                        nameSpace_=ns;
4221                    }
4222                    
4223                    int _nameSpace::port() {
4224                       if (port_) return port_;
4225                       port_=5988;
4226                       if (hostName_.subString(0,7)=="http://") {
4227                          protocol_="http://";
4228                          hostName_=hostName_.subString(7);
4229                       }
4230                       Sint32 p=hostName_.reverseFind(':');
4231                       if (p>=0) {
4232 kumpf         1.25       if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9'))
4233 schuur        1.1           port_=atoi(hostName_.subString(p+1).getCString());
4234                          hostName_.remove(p);
4235                       }
4236                       return port_;
4237                    }
4238                    
4239                    String _nameSpace::hostName() {
4240                       port();
4241                       return hostName_;
4242                    }
4243                    
4244                    String _nameSpace::nameSpace() {
4245                       return nameSpace_;
4246                    }
4247                    
4248                    
4249                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
4250 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs)
4251                    {
4252                      return DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace());
4253 schuur        1.1  }
4254                    
4255                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
4256 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn)
4257                    {
4258                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
4259                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(hn));
4260                    
4261 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
4262 mark.hamzy    1.20 
4263 schuur        1.1     return cInst;
4264                    }
4265                    
4266                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
4267 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs)
4268                    {
4269                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
4270                       const char *ns    = jEnv->GetStringUTFChars(jNs,NULL);
4271                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(String(hn),String(ns)));
4272                    
4273 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
4274                       jEnv->ReleaseStringUTFChars(jNs,ns);
4275 mark.hamzy    1.20 
4276 schuur        1.1     return cInst;
4277                    }
4278                    
4279                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
4280 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
4281                    {
4282                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4283                       const String &hn  = cNs->hostName_;
4284                       jstring       str = jEnv->NewStringUTF(hn.getCString());
4285                    
4286 schuur        1.1     return str;
4287                    }
4288                    
4289                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
4290 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
4291                    {
4292                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4293                       const String &ns  = cNs->nameSpace_;
4294                       jstring       str = jEnv->NewStringUTF(ns.getCString());
4295                    
4296 schuur        1.1     return str;
4297                    }
4298                    
4299                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
4300 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn)
4301                    {
4302                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4303                       const char *str = jEnv->GetStringUTFChars(jHn,NULL);
4304                    
4305 schuur        1.1     cNs->port_=0;
4306                       cNs->hostName_=str;
4307 mark.hamzy    1.27 
4308 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,str);
4309                    }
4310                    
4311                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
4312 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN)
4313                    {
4314 mark.hamzy    1.22    _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4315 mark.hamzy    1.20    const char *str = jEnv->GetStringUTFChars(jN,NULL);
4316                    
4317 schuur        1.1     cNs->nameSpace_=str;
4318 mark.hamzy    1.27 
4319 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
4320                    }
4321                    
4322 mark.hamzy    1.22 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1finalize
4323                       (JNIEnv *jEnv, jobject jThs, jint jNs)
4324                    {
4325                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4326                    
4327                       delete cNs;
4328                    
4329                       DEBUG_ConvertCleanup (jint, jNs);
4330                    }
4331                    
4332 schuur        1.1  // -------------------------------------
4333                    // ---
4334                    // -		Enumerators
4335                    // ---
4336                    // -------------------------------------
4337                    
4338 schuur        1.4  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
4339 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4340                    {
4341                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
4342                    
4343                       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass((*enm)[pos]));
4344 schuur        1.4  }
4345                    
4346                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
4347 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4348                    {
4349                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
4350                    
4351 schuur        1.4     return enm->size();
4352                    }
4353                    
4354 schuur        1.1  
4355                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
4356 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4357                    {
4358                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
4359                    
4360                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance((*enm)[pos]));
4361 schuur        1.1  }
4362                    
4363                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
4364 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4365                    {
4366                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
4367                    
4368 schuur        1.1     return enm->size();
4369                    }
4370                    
4371 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
4372                      (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4373                    {
4374                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
4375 schuur        1.1  
4376 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath((*enm)[pos]));
4377 schuur        1.1  }
4378                    
4379                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
4380 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4381                    {
4382                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
4383                    
4384 schuur        1.1     return enm->size();
4385                    }
4386                    
4387 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
4388 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4389                    {
4390                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
4391                    
4392                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, new CIMQualifierDecl((*enm)[pos]));
4393 schuur        1.5  }
4394                    
4395                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
4396 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4397                    {
4398                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
4399                    
4400 schuur        1.5     return enm->size();
4401                    }
4402                    
4403 schuur        1.1  // -------------------------------------
4404                    // ---
4405                    // -		CIMClient
4406                    // ---
4407                    // -------------------------------------
4408                    
4409 schuur        1.5  void checkNs(CIMObjectPath *cop, jint jNs) {
4410                       if (cop->getNameSpace().isNull()) {
4411 mark.hamzy    1.30       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4412                    
4413                          cop->setNameSpace(CIMNamespaceName(cNs->nameSpace()));
4414 schuur        1.5     }
4415                    }
4416                    
4417 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
4418 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw)
4419                    {
4420                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4421 mark.hamzy    1.27    const char *un  = jEnv->GetStringUTFChars(jUn,NULL);
4422                       const char *pw  = jEnv->GetStringUTFChars(jPw,NULL);
4423                       jint        jCc = 0;
4424 schuur        1.5  
4425 schuur        1.1     try {
4426                          CIMClient *cc=new CIMClient();
4427 mark.hamzy    1.27 
4428 schuur        1.1        cc->connect(cNs->hostName(),cNs->port(),un,pw);
4429 mark.hamzy    1.27 
4430                          jCc = DEBUG_ConvertCToJava (CIMClient*, jint, cc);
4431 schuur        1.1     }
4432 schuur        1.5     Catch(jEnv);
4433 mark.hamzy    1.27 
4434                       jEnv->ReleaseStringUTFChars(jUn,un);
4435                       jEnv->ReleaseStringUTFChars(jPw,pw);
4436                    
4437                       return jCc;
4438 schuur        1.1  }
4439                    
4440                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
4441 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc)
4442                    {
4443                       CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4444                    
4445 schuur        1.1     try {
4446                          cCc->disconnect();
4447                       }
4448 schuur        1.5     Catch(jEnv);
4449 schuur        1.1  }
4450 schuur        1.5  
4451 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
4452 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo,
4453 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4454                    {
4455                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4456                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4457                       CIMPropertyList  pl=getList(jEnv,jPl);
4458                    
4459 schuur        1.1     try {
4460 schuur        1.5        checkNs(cop,jNs);
4461 schuur        1.6        CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
4462                                    (Boolean)iq,(Boolean)ic,pl);
4463 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
4464 schuur        1.1     }
4465 schuur        1.5     Catch(jEnv);
4466 mark.hamzy    1.20 
4467 schuur        1.1     return 0;
4468                    }
4469 schuur        1.3  
4470                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
4471 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4472                    {
4473                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4474                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4475                    
4476 schuur        1.3     try {
4477 schuur        1.5        checkNs(cop,jNs);
4478 schuur        1.3        cCc->deleteClass(cop->getNameSpace(),cop->getClassName());
4479                       }
4480 schuur        1.5     Catch(jEnv);
4481 schuur        1.3  }
4482                    
4483                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
4484 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl)
4485                    {
4486                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4487                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4488                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
4489 schuur        1.3  
4490                       try {
4491                          cCc->createClass(cop->getNameSpace(),*cl);
4492                       }
4493 schuur        1.5     Catch(jEnv);
4494 schuur        1.3  }
4495                    
4496                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
4497 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl)
4498                    {
4499                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4500                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4501                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
4502 schuur        1.3  
4503 schuur        1.1     try {
4504 schuur        1.5       checkNs(cop,jNs);
4505 schuur        1.3       cCc->modifyClass(cop->getNameSpace(),*cl);
4506 schuur        1.1     }
4507 schuur        1.5     Catch(jEnv);
4508 schuur        1.1  }
4509 schuur        1.3  
4510                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses
4511 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic)
4512                    {
4513                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4514                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4515                    
4516 schuur        1.1     try {
4517 schuur        1.5        checkNs(cop,jNs);
4518 schuur        1.3        Array<CIMClass> enm=cCc->enumerateClasses(
4519 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic);
4520 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(enm));
4521 schuur        1.1     }
4522 schuur        1.5     Catch(jEnv);
4523 mark.hamzy    1.20 
4524 schuur        1.1     return 0;
4525                    }
4526                    
4527 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
4528 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
4529                    {
4530                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4531                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4532                       CIMNamespaceName  ns  = cop->getNameSpace();
4533                    
4534 schuur        1.1     try {
4535 schuur        1.5        checkNs(cop,jNs);
4536 schuur        1.7        Array<CIMName> enm=cCc->enumerateClassNames(ns,cop->getClassName(),(Boolean)deep);
4537 schuur        1.3        Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
4538                          for (int i=0,m=enm.size(); i<m; i++) {
4539                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
4540                          }
4541 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
4542 schuur        1.3     }
4543 schuur        1.5     Catch(jEnv);
4544 mark.hamzy    1.20 
4545 schuur        1.3     return 0;
4546                    }
4547                    
4548 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers
4549 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop)
4550                    {
4551                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4552                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4553                    
4554 schuur        1.6     try {
4555                          checkNs(cop,jNs);
4556 mark.hamzy    1.24 
4557                          Array<CIMQualifierDecl> enm=cCc->enumerateQualifiers(cop->getNameSpace());
4558                    
4559 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMQualifierDecl>*, jint, new Array<CIMQualifierDecl>(enm));
4560 schuur        1.6     }
4561                       Catch(jEnv);
4562 mark.hamzy    1.20 
4563 schuur        1.6     return 0;
4564                    }
4565                    
4566 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
4567 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo,
4568 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4569                    {
4570                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4571                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4572                       CIMPropertyList   pl  = getList(jEnv,jPl);
4573 schuur        1.5  
4574 schuur        1.3     try {
4575 schuur        1.5        checkNs(cop,jNs);
4576 mark.hamzy    1.24 
4577                          CIMInstance inst=cCc->getInstance(cop->getNameSpace(),
4578                                                            *cop,
4579                                                            (Boolean)lo,
4580                                                            (Boolean)iq,
4581                                                            (Boolean)ic,
4582                                                            pl);
4583                    
4584 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(inst));
4585 schuur        1.1     }
4586 schuur        1.5     Catch(jEnv);
4587 mark.hamzy    1.20 
4588 schuur        1.1     return 0;
4589                    }
4590                    
4591 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
4592 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4593                    {
4594                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4595                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4596                    
4597 schuur        1.3     try {
4598 schuur        1.5        checkNs(cop,jNs);
4599 schuur        1.3        cCc->deleteInstance(cop->getNameSpace(),*cop);
4600                       }
4601 schuur        1.5     Catch(jEnv);
4602 schuur        1.3  }
4603                    
4604 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
4605 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi)
4606                    {
4607                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4608                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4609                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
4610                    
4611 schuur        1.1     try {
4612 schuur        1.5        checkNs(cop,jNs);
4613 schuur        1.6        ci->setPath(*cop);
4614 schuur        1.1        CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
4615 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
4616 schuur        1.1     }
4617 schuur        1.5     Catch(jEnv);
4618 mark.hamzy    1.20 
4619 schuur        1.5     return 0;
4620 schuur        1.1  }
4621 schuur        1.3  
4622 schuur        1.6  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance
4623                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi,
4624 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
4625                    {
4626                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4627                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4628                       CIMInstance     *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
4629                       CIMPropertyList  pl  = getList(jEnv,jPl);
4630                    
4631 schuur        1.1     try {
4632 schuur        1.6        checkNs(cop,jNs);
4633                          ci->setPath(*cop);
4634                          cCc->modifyInstance(cop->getNameSpace(),*ci,(Boolean)iq,pl);
4635 schuur        1.1     }
4636 schuur        1.5     Catch(jEnv);
4637 schuur        1.3  }
4638                    
4639                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
4640 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo,
4641 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4642                    {
4643                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4644                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4645                       CIMPropertyList  pl  = getList(jEnv,jPl);
4646                    
4647 schuur        1.3     try {
4648 schuur        1.5        checkNs(cop,jNs);
4649 schuur        1.6        CIMPropertyList props;
4650 schuur        1.3        Array<CIMInstance> enm=cCc->enumerateInstances(
4651 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic,pl);
4652 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(enm));
4653 schuur        1.3     }
4654 schuur        1.5     Catch(jEnv);
4655 mark.hamzy    1.20 
4656 schuur        1.3     return 0;
4657                    }
4658                    
4659                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
4660 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
4661                    {
4662                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4663                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4664                    
4665 schuur        1.3     try {
4666 schuur        1.5        checkNs(cop,jNs);
4667 schuur        1.3        Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
4668                             cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
4669 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4670 schuur        1.3     }
4671 schuur        1.5     Catch(jEnv);
4672 mark.hamzy    1.20 
4673 schuur        1.5     return 0;
4674                    }
4675                    
4676                    
4677                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
4678 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4679                    {
4680                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4681                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4682                    
4683 schuur        1.5     try {
4684                          checkNs(cop,jNs);
4685                          CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName()));
4686 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, val);
4687 schuur        1.3     }
4688 schuur        1.5     Catch(jEnv);
4689 mark.hamzy    1.20 
4690 schuur        1.3     return 0;
4691                    }
4692                    
4693 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
4694 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4695                    {
4696                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4697                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4698                    
4699 schuur        1.5     try {
4700                          checkNs(cop,jNs);
4701                          cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName());
4702                       }
4703                       Catch(jEnv);
4704                    }
4705                    
4706                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
4707 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ)
4708                    {
4709                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4710                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4711                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
4712                    
4713 schuur        1.5     try {
4714                          checkNs(cop,jNs);
4715                          cCc->setQualifier(cop->getNameSpace(),*qt);
4716                       }
4717                       Catch(jEnv);
4718                    }
4719                    
4720 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
4721 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn)
4722                    {
4723                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4724                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4725                       const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
4726                       CIMName        pName(str);
4727 mark.hamzy    1.27    jint           jCv = 0;
4728 mark.hamzy    1.20 
4729 schuur        1.3     try {
4730 schuur        1.5        checkNs(cop,jNs);
4731 mark.hamzy    1.27 
4732                          CIMValue *val = new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
4733                    
4734                          jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4735 schuur        1.3     }
4736 schuur        1.5     Catch(jEnv);
4737 mark.hamzy    1.20 
4738 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jPn,str);
4739                    
4740                       return jCv;
4741 schuur        1.3  }
4742 schuur        1.5  
4743 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
4744 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV)
4745                    {
4746                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4747                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4748 mark.hamzy    1.22    CIMValue      *val = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
4749 mark.hamzy    1.20    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
4750                       CIMName        pName(str);
4751                    
4752 schuur        1.3     try {
4753 schuur        1.5        checkNs(cop,jNs);
4754 schuur        1.3        cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
4755                       }
4756 schuur        1.5     Catch(jEnv);
4757 mark.hamzy    1.27 
4758                       jEnv->ReleaseStringUTFChars(jPn,str);
4759 schuur        1.3  }
4760                    
4761                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
4762 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut)
4763                    {
4764 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
4765                    
4766 mark.hamzy    1.27    CIMClient            *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4767                       CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4768                       const char           *str = jEnv->GetStringUTFChars(jMn,NULL);
4769                       CIMName               method(str);
4770                       jint                  jCv = 0;
4771                       Array<CIMParamValue>  in;
4772                       Array<CIMParamValue>  out;
4773 schuur        1.3  
4774 mark.hamzy    1.26    for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i<m; i++) {
4775 schuur        1.3         JMPIjvm::checkException(jEnv);
4776 mark.hamzy    1.20 
4777 mark.hamzy    1.26        jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
4778 schuur        1.3         JMPIjvm::checkException(jEnv);
4779 mark.hamzy    1.20 
4780 mark.hamzy    1.26        jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
4781 mark.hamzy    1.20        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
4782                    
4783 schuur        1.3         JMPIjvm::checkException(jEnv);
4784 mark.hamzy    1.20 
4785 schuur        1.3         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
4786                       }
4787 mark.hamzy    1.27 
4788 schuur        1.3     try {
4789 schuur        1.5        checkNs(cop,jNs);
4790 mark.hamzy    1.27 
4791                          CIMValue *val = new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
4792 schuur        1.3  
4793                          for (int i=0,m=out.size(); i<m; i++) {
4794 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
4795                             const CIMValue       v    = parm.getValue();
4796                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
4797                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
4798 mark.hamzy    1.26          jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
4799 mark.hamzy    1.20 
4800 mark.hamzy    1.26          jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
4801 schuur        1.3        }
4802 mark.hamzy    1.27 
4803                          jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4804 mark.hamzy    1.20    }
4805 schuur        1.5     Catch(jEnv);
4806 mark.hamzy    1.20 
4807 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jMn,str);
4808                    
4809                       return jCv;
4810 schuur        1.3  }
4811                    
4812 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
4813                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,
4814 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
4815                    {
4816 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
4817                    
4818 mark.hamzy    1.27    CIMClient            *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4819                       CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4820                       const char           *str = jEnv->GetStringUTFChars(jMn,NULL);
4821                       CIMName               method(str);
4822                       jint                  jCv = 0;
4823 schuur        1.7     Array<CIMParamValue> in;
4824                       Array<CIMParamValue> out;
4825                    
4826                       for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
4827                           JMPIjvm::checkException(jEnv);
4828 mark.hamzy    1.20 
4829 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
4830                           JMPIjvm::checkException(jEnv);
4831 mark.hamzy    1.20 
4832 mark.hamzy    1.26        jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
4833 mark.hamzy    1.20        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
4834                    
4835 schuur        1.7         JMPIjvm::checkException(jEnv);
4836 mark.hamzy    1.20 
4837 schuur        1.7         in.append(*p);
4838                       }
4839                       try {
4840                          checkNs(cop,jNs);
4841                          CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
4842                    
4843                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
4844 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
4845                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
4846                    
4847                             jEnv->SetObjectArrayElement(jOut,
4848                                                         i,
4849 mark.hamzy    1.26                                      jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
4850 schuur        1.7        }
4851 mark.hamzy    1.27       jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4852 schuur        1.7     }
4853                       Catch(jEnv);
4854 mark.hamzy    1.20 
4855 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jMn,str);
4856                    
4857                       return jCv;
4858 schuur        1.6  }
4859                    
4860 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
4861 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl)
4862                    {
4863                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4864                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4865                       const char    *str = jEnv->GetStringUTFChars(jQuery,NULL);
4866                       String         query(str);
4867 schuur        1.3  
4868 mark.hamzy    1.30 /* @NOTE
4869 mark.hamzy    1.16 ** This does not work for some reason on the client java code:
4870 mark.hamzy    1.18 **   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::Java_org_pegasus_jmpi_CIMClient__1execQuery: jEnv = "<<PEGASUS_STD(hex)<<(int)jEnv<<", jThs = "<<(int)jThs<<PEGASUS_STD(dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD(hex)<<(int)jQuery<<", jQl = "<<(int)jQl<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
4871 mark.hamzy    1.16 ** What does work is:
4872                    **   printf ("This is a test\n");
4873 mark.hamzy    1.30 **
4874                    ** To debug these JNI functions insert the following:
4875                    **    if (getenv ("PEGASUS_JMPI_GDB"))
4876                    **    {
4877                    **       bool fLoop = true;
4878                    **       int  i     = 0;
4879                    **
4880                    **       while (fLoop)
4881                    **       {
4882                    **          i = 1;
4883                    **       }
4884                    **    }
4885                    ** Export the variable PEGASUS_JMPI_GDB=1.
4886                    ** Start gdb in another process.
4887                    **    shell ps -efl
4888                    **    att <ps number>
4889                    **    set fLoop = 0
4890 mark.hamzy    1.16 */
4891                    
4892 schuur        1.3     jEnv->ReleaseStringUTFChars(jQuery,str);
4893 mark.hamzy    1.16 
4894 schuur        1.3     str=jEnv->GetStringUTFChars(jQl,NULL);
4895 mark.hamzy    1.27 
4896 schuur        1.3     String ql(str);
4897 mark.hamzy    1.16 
4898 schuur        1.3     jEnv->ReleaseStringUTFChars(jQl,str);
4899                    
4900                       try {
4901 schuur        1.5        checkNs(cop,jNs);
4902 mark.hamzy    1.20       Array<CIMObject> enm=cCc->execQuery(cop->getNameSpace(),ql,query);
4903 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4904                          for (int i=0,m=enm.size(); i<m; i++) {
4905                             enmInst->append(CIMInstance(enm[i]));
4906                          }
4907 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4908 schuur        1.3     }
4909 schuur        1.5     Catch(jEnv);
4910 mark.hamzy    1.20 
4911 schuur        1.3     return 0;
4912                    }
4913                    
4914 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
4915 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4916 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
4917                    {
4918                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4919                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4920                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4921                       CIMName        assocClass(str);
4922 schuur        1.3  
4923                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4924                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4925 mark.hamzy    1.20 
4926 schuur        1.3     CIMName resultClass(str);
4927 mark.hamzy    1.20 
4928 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4929                       str=jEnv->GetStringUTFChars(jRole,NULL);
4930 mark.hamzy    1.20 
4931 schuur        1.3     String role(str);
4932 mark.hamzy    1.20 
4933 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4934                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4935 mark.hamzy    1.20 
4936 schuur        1.3     String resultRole(str);
4937 mark.hamzy    1.20 
4938 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4939                    
4940                       try {
4941 schuur        1.5        checkNs(cop,jNs);
4942 schuur        1.3        Array<CIMObjectPath> enm=cCc->associatorNames(
4943                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
4944 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4945 schuur        1.3     }
4946 schuur        1.5     Catch(jEnv);
4947 mark.hamzy    1.20 
4948 schuur        1.3     return 0;
4949                    }
4950                    
4951 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
4952 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4953 schuur        1.3     jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
4954 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
4955                    {
4956                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4957                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4958                       CIMPropertyList  pl  = getList(jEnv,jPl);
4959                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4960                       CIMName          assocClass(str);
4961 schuur        1.3  
4962                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4963                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4964 mark.hamzy    1.20 
4965 schuur        1.3     CIMName resultClass(str);
4966 mark.hamzy    1.20 
4967 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4968                       str=jEnv->GetStringUTFChars(jRole,NULL);
4969 mark.hamzy    1.20 
4970 schuur        1.3     String role(str);
4971 mark.hamzy    1.20 
4972 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4973                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4974 mark.hamzy    1.20 
4975 schuur        1.3     String resultRole(str);
4976 mark.hamzy    1.20 
4977 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4978                    
4979                       try {
4980 schuur        1.5        checkNs(cop,jNs);
4981 schuur        1.3        Array<CIMObject> enm=cCc->associators(
4982                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
4983 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
4984 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4985                          for (int i=0,m=enm.size(); i<m; i++) {
4986                             enmInst->append(CIMInstance(enm[i]));
4987                          }
4988 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4989 schuur        1.3     }
4990 schuur        1.5     Catch(jEnv);
4991 mark.hamzy    1.20 
4992 schuur        1.3     return 0;
4993                    }
4994                    
4995 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
4996 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4997 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
4998                    {
4999                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5000                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
5001                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
5002                       CIMName        assocClass(str);
5003 schuur        1.3  
5004                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
5005                       str=jEnv->GetStringUTFChars(jRole,NULL);
5006 mark.hamzy    1.20 
5007 schuur        1.3     String role(str);
5008 mark.hamzy    1.20 
5009 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
5010                    
5011                       try {
5012 schuur        1.5        checkNs(cop,jNs);
5013 schuur        1.3        Array<CIMObjectPath> enm=cCc->referenceNames(
5014                             cop->getNameSpace(),*cop,assocClass,role);
5015 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
5016 schuur        1.3     }
5017 schuur        1.5     Catch(jEnv);
5018 mark.hamzy    1.20 
5019 schuur        1.3     return 0;
5020                    }
5021                    
5022 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
5023 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
5024 schuur        1.3     jstring jAssocClass, jstring jRole,
5025 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
5026                    {
5027                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5028                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
5029                       CIMPropertyList  pl  = getList(jEnv,jPl);
5030                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
5031                       CIMName          assocClass(str);
5032 schuur        1.3  
5033                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
5034                       str=jEnv->GetStringUTFChars(jRole,NULL);
5035 mark.hamzy    1.20 
5036 schuur        1.3     String role(str);
5037 mark.hamzy    1.20 
5038 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
5039                    
5040                       try {
5041 schuur        1.5        checkNs(cop,jNs);
5042 schuur        1.3        Array<CIMObject> enm=cCc->references(
5043                             cop->getNameSpace(),*cop,assocClass,role,
5044 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
5045 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
5046                          for (int i=0,m=enm.size(); i<m; i++) {
5047                             enmInst->append(CIMInstance(enm[i]));
5048                          }
5049 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
5050 schuur        1.3     }
5051 schuur        1.5     Catch(jEnv);
5052 mark.hamzy    1.20 
5053 schuur        1.5     return 0;
5054                    }
5055                    
5056 schuur        1.6  static int normalizeNs(String &ns, String &nsBase, String &lastNsComp) {
5057                       Uint32 n=ns.size();
5058                       if (ns[n-1]=='/') {
5059                          if (n>=2) ns=ns.subString(0,n-2);
5060                       }
5061                    
5062                       lastNsComp=ns;
5063                       nsBase="root";
5064                    
5065                       n=ns.reverseFind('/');
5066                       if (n!=PEG_NOT_FOUND) {
5067                          lastNsComp=ns.subString(n+1);
5068                          nsBase=ns.subString(0,n);
5069                       }
5070                       return 0;
5071                    }
5072                    
5073 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
5074 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
5075                    {
5076                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5077                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
5078                       String      ns(str);
5079 schuur        1.5  
5080                       jEnv->ReleaseStringUTFChars(jNs,str);
5081 schuur        1.6  
5082                       String lastNsComp;
5083                       String nsBase;
5084                    
5085                       normalizeNs(ns,nsBase,lastNsComp);
5086 schuur        1.5  
5087                       CIMInstance newInstance(CIMName("__Namespace"));
5088 schuur        1.6     newInstance.addProperty(CIMProperty(CIMName ("name"),lastNsComp));
5089 schuur        1.5  
5090                       try {
5091 schuur        1.6        cCc->createInstance(CIMNamespaceName(nsBase),newInstance);
5092 schuur        1.3     }
5093 schuur        1.5     Catch(jEnv);
5094                    }
5095                    
5096                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
5097 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec)
5098                    {
5099 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
5100                    
5101 mark.hamzy    1.20    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5102                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
5103                       String         ns  = cop->getNameSpace().getString();
5104 schuur        1.6  
5105                       try {
5106                          Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
5107                             cop->getNameSpace(),CIMName("__Namespace"));
5108                          for (int i=0,s=enm.size(); i<s; i++) {
5109                             CIMObjectPath &cop=enm[i];
5110                             const Array<CIMKeyBinding>& kb=cop.getKeyBindings();
5111 mark.hamzy    1.17          const String &n=kb[0].getValue();
5112 mark.hamzy    1.16          if (!deep && n.find('/')!=PEG_NOT_FOUND)
5113                                continue;
5114 mark.hamzy    1.17          String x=ns+"/"+n;
5115                             jstring str=jEnv->NewStringUTF(x.getCString());
5116 mark.hamzy    1.26          jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,str);
5117 schuur        1.6        }
5118                       }
5119                       Catch(jEnv);
5120 mark.hamzy    1.20 
5121 schuur        1.5     return jVec;
5122                    }
5123                    
5124                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
5125 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
5126                    {
5127                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5128                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
5129                       String      ns(str);
5130 schuur        1.6  
5131                       jEnv->ReleaseStringUTFChars(jNs,str);
5132 mark.hamzy    1.20 
5133 schuur        1.6     String lastNsComp;
5134                       String nsBase;
5135                    
5136                       normalizeNs(ns,nsBase,lastNsComp);
5137                    
5138                       CIMObjectPath cop(String::EMPTY,CIMNamespaceName(nsBase),CIMName("__Namespace"));
5139                       Array<CIMKeyBinding> kb;
5140                       kb.append(CIMKeyBinding(("Name"),CIMValue(lastNsComp)));
5141                       cop.setKeyBindings(kb);
5142                    
5143                       try {
5144                          cCc->deleteInstance(CIMNamespaceName(nsBase),cop);
5145                       }
5146                       Catch(jEnv);
5147 schuur        1.3  }
5148 schuur        1.1  
5149 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1finalize
5150                       (JNIEnv *jEnv, jobject jThs, jint jCc)
5151                    {
5152                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5153                    
5154                       delete cCc;
5155                    
5156                       DEBUG_ConvertCleanup (jint, jCc);
5157                    }
5158                    
5159 mark.hamzy    1.38 // -------------------------------------
5160                    // ---
5161                    // -		CIMObject
5162                    // ---
5163                    // -------------------------------------
5164                    
5165 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newClass
5166 mark.hamzy    1.41   (JNIEnv *jEnv, jobject jThs, jint jCc)
5167 mark.hamzy    1.35 {
5168                       CIMClass *cCc = DEBUG_ConvertJavaToC (jint, CIMClass*, jCc);
5169                    
5170                       try {
5171                          CIMObject *cCo = new CIMObject (*cCc);
5172                    
5173                          return DEBUG_ConvertCToJava (CIMObject*, jint, cCo);
5174                       }
5175                       Catch(jEnv);
5176                    
5177                       return 0;
5178                    }
5179                    
5180                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newInstance
5181 mark.hamzy    1.41   (JNIEnv *jEnv, jobject jThs, jint jCi)
5182 mark.hamzy    1.35 {
5183                       CIMInstance *cCi = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
5184                    
5185                       try {
5186                          CIMObject *cCo = new CIMObject (*cCi);
5187                    
5188                          return DEBUG_ConvertCToJava (CIMObject*, jint, cCo);
5189                       }
5190                       Catch(jEnv);
5191                    
5192                       return 0;
5193                    }
5194                    
5195                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObject__1finalize
5196                      (JNIEnv *jEnv, jobject jThs, jint jInst)
5197                    {
5198                       CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jInst);
5199                    
5200                       delete co;
5201                    
5202                       DEBUG_ConvertCleanup (jint, jInst);
5203 mark.hamzy    1.35 }
5204                    
5205 mark.hamzy    1.38 // -------------------------------------
5206                    // ---
5207                    // -		OperationContext
5208                    // ---
5209                    // -------------------------------------
5210                    
5211 mark.hamzy    1.36 /*
5212                     * Class:     OperationContext
5213                     * Method:    _get
5214                     * Signature: (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
5215                     */
5216                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get
5217                      (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jContainer, jstring jKey)
5218                    {
5219                       OperationContext *poc  = DEBUG_ConvertJavaToC (jint, OperationContext*, jInst);
5220                       jobject           jRet = 0;
5221                    
5222                       if (!poc)
5223                       {
5224                          return jRet;
5225                       }
5226                    
5227                       const char *pszContainer = jEnv->GetStringUTFChars (jContainer, NULL);
5228                       const char *pszKey       = jEnv->GetStringUTFChars (jKey, NULL);
5229                       String      container (pszContainer);
5230                       String      key       (pszKey);
5231                    
5232 mark.hamzy    1.36 ///printf ("container: %s\n", pszContainer);
5233                    ///printf ("key: %s\n", pszKey);
5234                    
5235                       try {
5236                          if (container == "IdentityContainer")
5237                          {
5238                             IdentityContainer ic = poc->get (IdentityContainer::NAME);
5239                    
5240                    /////////printf ("ic\n");
5241                    
5242                             if (key == "userName")
5243                             {
5244                                String userName = ic.getUserName ();
5245                    
5246                    ////////////printf ("userName: %s\n", (const char*)userName.getCString ());
5247                    
5248                                jRet = jEnv->NewStringUTF ((const char*)userName.getCString ());
5249                             }
5250                          }
5251                          else if (container == "SubscriptionInstanceContainer")
5252                          {
5253 mark.hamzy    1.36          SubscriptionInstanceContainer sic = poc->get (SubscriptionInstanceContainer::NAME);
5254                    
5255                             if (key == "subscriptionInstance")
5256                             {
5257                                CIMInstance ci     = sic.getInstance ();
5258                                jint        jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance (ci));
5259                    
5260                                jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef,
5261                                                        JMPIjvm::jv.CIMInstanceNewI,
5262                                                        jciRef);
5263                             }
5264                          }
5265                          else if (container == "SubscriptionInstanceNamesContainer")
5266                          {
5267                             SubscriptionInstanceNamesContainer sinc = poc->get (SubscriptionInstanceNamesContainer::NAME);
5268                    
5269                             if (key == "subscriptionInstanceNames")
5270                             {
5271                                Array<CIMObjectPath> copa        = sinc.getInstanceNames ();
5272                                jobjectArray         jcopa       = 0;
5273                                int                  jcopaLength = copa.size ();
5274 mark.hamzy    1.36 
5275                                jcopa = jEnv->NewObjectArray (jcopaLength,
5276                                                              JMPIjvm::jv.CIMObjectPathClassRef,
5277                                                              0);
5278                    
5279                                for (int i = 0; i < jcopaLength; i++)
5280                                {
5281                                   jEnv->SetObjectArrayElement (jcopa,
5282                                                                i,
5283                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
5284                                                                                 JMPIjvm::jv.CIMObjectPathNewI,
5285                                                                                 new CIMObjectPath (copa[i])));
5286                                }
5287                    
5288                                jRet = (jobject)jcopa;
5289                             }
5290                          }
5291                          else if (container == "SubscriptionFilterConditionContainer")
5292                          {
5293                             SubscriptionFilterConditionContainer sfcc = poc->get (SubscriptionFilterConditionContainer::NAME);
5294                    
5295 mark.hamzy    1.36 /////////printf ("sfcc\n");
5296                    
5297                             if (key == "filterCondition")
5298                             {
5299                                String filterCondition = sfcc.getFilterCondition ();
5300                    
5301                    ////////////printf ("filterCondition: %s\n", (const char*)filterCondition.getCString ());
5302                    
5303                                jRet = jEnv->NewStringUTF ((const char*)filterCondition.getCString ());
5304                             }
5305                             else if (key == "queryLanguage")
5306                             {
5307                                String queryLanguage = sfcc.getQueryLanguage ();
5308                    
5309                                jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ());
5310                             }
5311                          }
5312                          else if (container == "SubscriptionFilterQueryContainer")
5313                          {
5314                             SubscriptionFilterQueryContainer sfqc = poc->get (SubscriptionFilterQueryContainer::NAME);
5315                    
5316 mark.hamzy    1.36          if (key == "filterQuery")
5317                             {
5318                                String filterQuery = sfqc.getFilterQuery ();
5319                    
5320                                jRet = jEnv->NewStringUTF ((const char*)filterQuery.getCString ());
5321                             }
5322                             else if (key == "queryLanguage")
5323                             {
5324                                String queryLanguage = sfqc.getQueryLanguage ();
5325                    
5326                                jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ());
5327                             }
5328                             else if (key == "sourceNameSpace")
5329                             {
5330                                CIMNamespaceName cimNameSpaceName = sfqc.getSourceNameSpace ();
5331                                String           nameSpaceName    = cimNameSpaceName.getString ();
5332                    
5333                                jRet = jEnv->NewStringUTF ((const char*)nameSpaceName.getCString ());
5334                             }
5335                          }
5336                          else if (container == "SnmpTrapOidContainer")
5337 mark.hamzy    1.36       {
5338                             SnmpTrapOidContainer stoc = poc->get (SnmpTrapOidContainer::NAME);
5339                    
5340                             if (key == "snmpTrapOid")
5341                             {
5342                                String snmpTrapOid = stoc.getSnmpTrapOid ();
5343                    
5344                                jRet = jEnv->NewStringUTF ((const char*)snmpTrapOid.getCString ());
5345                             }
5346                          }
5347                       }
5348                       Catch(jEnv);
5349                    
5350                    ///printf ("jRet: %08X\n", (int)jRet);
5351                    
5352                       jEnv->ReleaseStringUTFChars (jContainer, pszContainer);
5353                       jEnv->ReleaseStringUTFChars (jKey, pszKey);
5354                    
5355                       return jRet;
5356                    }
5357                    
5358 mark.hamzy    1.38 // -------------------------------------
5359                    // ---
5360                    // -		SelectExp
5361                    // ---
5362                    // -------------------------------------
5363                    
5364                    /*
5365                     * Class:     org_pegasus_jmpi_SelectExp
5366                     * Method:    _finalize
5367                     * Signature: (I)V
5368                     */
5369                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_SelectExp__1finalize
5370 mark.hamzy    1.42   (JNIEnv *jEnv, jobject jThs, jint jWQLStmt)
5371 mark.hamzy    1.38 {
5372 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jint, WQLSelectStatement*, jWQLStmt);
5373 mark.hamzy    1.38 
5374 mark.hamzy    1.42    delete wql_stmt;
5375 mark.hamzy    1.38 
5376 mark.hamzy    1.42    DEBUG_ConvertCleanup (jint, jWQLStmt);
5377 mark.hamzy    1.38 }
5378                    
5379                    /*
5380                     * Class:     org_pegasus_jmpi_SelectExp
5381                     * Method:    _newSelectExp
5382                     * Signature: (Ljava/lang/String;)I
5383                     */
5384                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_SelectExp__1newSelectExp
5385                      (JNIEnv *jEnv, jobject jThs, jstring jQuery)
5386                    {
5387                       const char         *pszQuery = jEnv->GetStringUTFChars (jQuery, NULL);
5388 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = NULL;
5389 mark.hamzy    1.38    String              queryLanguage (CALL_SIGN_WQL);
5390                       String              query (pszQuery);
5391                    
5392 mark.hamzy    1.42    wql_stmt = new WQLSelectStatement (queryLanguage, query);
5393                       DDD(PEGASUS_STD(cout)<<"--- Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = "<<PEGASUS_STD(hex)<<(int)wql_stmt<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
5394                    
5395                       try
5396                       {
5397                          WQLParser::parse (query, *wql_stmt);
5398                       }
5399                       catch (const Exception &e)
5400                       {
5401                          cerr << "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: " << e.getMessage () << endl;
5402                       }
5403 mark.hamzy    1.38 
5404                       jEnv->ReleaseStringUTFChars (jQuery, pszQuery);
5405                    
5406 mark.hamzy    1.42    return DEBUG_ConvertCToJava (WQLSelectStatement *, jint, wql_stmt);
5407 mark.hamzy    1.38 }
5408                    
5409                    /*
5410                     * Class:     org_pegasus_jmpi_SelectExp
5411                     * Method:    _getSelectString
5412                     * Signature: (I)Ljava/lang/String;
5413                     */
5414                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_SelectExp__1getSelectString
5415 mark.hamzy    1.42   (JNIEnv *jEnv, jobject jThs, jint jWQLStmt)
5416 mark.hamzy    1.38 {
5417 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jint, WQLSelectStatement*, jWQLStmt);
5418                       String              cond;
5419                    
5420                       if (wql_stmt)
5421                       {
5422                          try
5423                          {
5424                             cond = wql_stmt->getQuery ();
5425                          }
5426                          catch (const Exception &e)
5427                          {
5428                             cerr << "Java_org_pegasus_jmpi_SelectExp__1getSelectString: Caught: " << e.getMessage () << endl;
5429                    
5430                             cond = "";
5431                          }
5432                       }
5433                       else
5434                       {
5435                          cond = "";
5436                       }
5437 mark.hamzy    1.38 
5438 mark.hamzy    1.42    return (jstring)jEnv->NewStringUTF (cond.getCString ());
5439 mark.hamzy    1.38 }
5440                    
5441                    // -------------------------------------
5442                    // ---
5443                    // -		JMPISelectList
5444                    // ---
5445                    // -------------------------------------
5446                    
5447                    /*
5448                     * Class:     org_pegasus_jmpi_JMPISelectList
5449                     * Method:    _applyInstance
5450                     * Signature: (II)I
5451                     */
5452                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyInstance
5453 mark.hamzy    1.42   (JNIEnv *jEnv, jobject jThs, jint jWQLStmt, jint jciInstance)
5454 mark.hamzy    1.38 {
5455 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jint, WQLSelectStatement*, jWQLStmt);
5456                       CIMInstance        *ci       = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciInstance);
5457                       CIMInstance        *ciRet    = 0;
5458 mark.hamzy    1.38 
5459 mark.hamzy    1.42    if (  !wql_stmt
5460                          || !ci
5461 mark.hamzy    1.38       )
5462                       {
5463                          return 0;
5464                       }
5465                    
5466                       ciRet = new CIMInstance (ci->clone ());
5467                    
5468                       if (ciRet)
5469                       {
5470 mark.hamzy    1.42       try
5471                          {
5472                             wql_stmt->applyProjection (*ciRet, false);
5473                          }
5474                          catch (const Exception &e)
5475                          {
5476                             cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyInstance: Caught: " << e.getMessage () << endl;
5477                    
5478                             return 0;
5479                          }
5480 mark.hamzy    1.38    }
5481                    
5482                       return DEBUG_ConvertCToJava (CIMInstance *, jint, ciRet);
5483                    }
5484                    
5485                    /*
5486                     * Class:     org_pegasus_jmpi_JMPISelectList
5487                     * Method:    _applyClass
5488                     * Signature: (II)I
5489                     */
5490                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyClass
5491 mark.hamzy    1.42   (JNIEnv *jEnv, jobject jThs, jint jWQLStmt, jint jciClass)
5492 mark.hamzy    1.38 {
5493 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jint, WQLSelectStatement*, jWQLStmt);
5494                       CIMClass           *cc       = DEBUG_ConvertJavaToC (jint, CIMClass*, jciClass);
5495                       CIMClass           *ccRet    = NULL;
5496 mark.hamzy    1.38 
5497 mark.hamzy    1.42    if (!wql_stmt)
5498 mark.hamzy    1.38    {
5499                          return 0;
5500                       }
5501                    
5502                       if (cc)
5503                       {
5504                          CIMObject co (cc->clone ());
5505                    
5506 mark.hamzy    1.42       try
5507                          {
5508                             wql_stmt->applyProjection (co, false);
5509                          }
5510                          catch (const Exception &e)
5511                          {
5512                             cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyClass: Caught: " << e.getMessage () << endl;
5513                    
5514                             return 0;
5515                          }
5516 mark.hamzy    1.38 
5517                          ccRet = new CIMClass (co);
5518                    
5519                          return DEBUG_ConvertCToJava (CIMClass *, jint, ccRet);
5520                       }
5521                    
5522                       return 0;
5523                    }
5524                    
5525                    // -------------------------------------
5526                    // ---
5527                    // -		JMPIQueryExp
5528                    // ---
5529                    // -------------------------------------
5530                    
5531                    /*
5532                     * Class:     org_pegasus_jmpi_JMPIQueryExp
5533                     * Method:    _applyInstance
5534                     * Signature: (II)Z
5535                     */
5536                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance
5537 mark.hamzy    1.42   (JNIEnv *jEnv, jobject jThs, jint jWQLStmt, jint jciInstance)
5538 mark.hamzy    1.38 {
5539 mark.hamzy    1.42    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (jint, WQLSelectStatement*, jWQLStmt);
5540                       CIMInstance        *ci       = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciInstance);
5541 mark.hamzy    1.38 
5542 mark.hamzy    1.42    if (  !wql_stmt
5543                          || !ci
5544 mark.hamzy    1.38       )
5545                       {
5546                          return 0;
5547                       }
5548                    
5549 mark.hamzy    1.42    try
5550 mark.hamzy    1.38    {
5551 mark.hamzy    1.42       return wql_stmt->evaluate (*ci);
5552 mark.hamzy    1.38    }
5553 mark.hamzy    1.42    catch (const Exception &e)
5554                       {
5555                          cerr << "Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance: Caught: " << e.getMessage () << endl;
5556 mark.hamzy    1.38 
5557 mark.hamzy    1.42       return false;
5558                       }
5559 mark.hamzy    1.38 }
5560                    
5561 schuur        1.5  } // extern "C"
5562 schuur        1.1  
5563                    PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2