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

   1 karl  1.12 //%2005////////////////////////////////////////////////////////////////////////
   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 schuur 1.1  //
  12             // Permission is hereby granted, free of charge, to any person obtaining a copy
  13             // of this software and associated documentation files (the "Software"), to
  14             // deal in the Software without restriction, including without limitation the
  15             // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  16             // sell copies of the Software, and to permit persons to whom the Software is
  17             // furnished to do so, subject to the following conditions:
  18 david.dillard 1.15 //
  19 schuur        1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  20                    // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  21                    // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  22                    // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  23                    // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  24                    // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  25                    // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  26                    // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  27                    //
  28                    //==============================================================================
  29                    //
  30                    // Author:      Adrian Schuur, schuur@de.ibm.com
  31                    //
  32                    // Modified By: Adrian Dutta
  33                    //              Andy Viciu
  34                    //              Magda Vacarelu
  35 david.dillard 1.15 //              David Dillard, VERITAS Software Corp.
  36                    //                  (david.dillard@veritas.com)
  37 mark.hamzy    1.24 //              Mark Hamzy,    hamzy@us.ibm.com
  38 schuur        1.1  //
  39                    //%/////////////////////////////////////////////////////////////////////////////
  40                    
  41                    
  42                    #include "JMPIImpl.h"
  43                    
  44 konrad.r      1.14 #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
  45                    #include <Pegasus/Common/DynamicLibrary.h>
  46                    #else
  47 schuur        1.1  #include <dlfcn.h>
  48 konrad.r      1.14 #endif
  49 schuur        1.1  #include <iostream>
  50 mark.hamzy    1.16 #include <sstream>
  51 schuur        1.1  
  52                    #include <Pegasus/Common/Config.h>
  53                    #include <Pegasus/Common/System.h>
  54                    #include <Pegasus/Common/CIMClass.h>
  55                    #include <Pegasus/Common/CIMInstance.h>
  56                    #include <Pegasus/Common/CIMObjectPath.h>
  57                    #include <Pegasus/Common/CIMProperty.h>
  58                    #include <Pegasus/Common/CIMType.h>
  59                    #include <Pegasus/Common/OperationContext.h>
  60                    #include <Pegasus/Provider/CIMOMHandle.h>
  61                    #include <Pegasus/Client/CIMClient.h>
  62 schuur        1.3  #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
  63 schuur        1.1  
  64                    PEGASUS_USING_STD;
  65                    PEGASUS_NAMESPACE_BEGIN
  66                    
  67                    JavaVM *JMPIjvm::jvm=NULL;
  68                    JvmVector JMPIjvm::jv;
  69 schuur        1.2  int JMPIjvm::trace=0;
  70 schuur        1.1  
  71 mark.hamzy    1.16 #define DDD(x) if (JMPIjvm::trace) x;
  72                    
  73 mark.hamzy    1.20 #include "Convert.h"
  74                    
  75 mark.hamzy    1.17 JMPIjvm::ClassTable  JMPIjvm::_classTable;
  76                    JMPIjvm::ObjectTable JMPIjvm::_objectTable;
  77                    
  78 schuur        1.1  typedef struct {
  79                      int clsIndex;
  80                      const char * methodName;
  81                      const char * signature;
  82                    } METHOD_STRUCT;
  83                    
  84                    const char* classNames[]={
  85                          "java/util/Vector" , // 0
  86                          "java/lang/Boolean", // 1
  87                          "java/lang/Byte",    // 2
  88                          "java/lang/Short",   // 3
  89                          "java/lang/Integer", // 4
  90                          "java/lang/Long",    // 5
  91                          "java/lang/Float",   // 6
  92                          "java/lang/Double",  // 7
  93                          "org/pegasus/jmpi/UnsignedInt8",    // 8
  94                          "org/pegasus/jmpi/UnsignedInt16",   // 9
  95                          "org/pegasus/jmpi/UnsignedInt32",   // 10
  96                          "org/pegasus/jmpi/UnsignedInt64",   // 11
  97                          "org/pegasus/jmpi/CIMObjectPath",   // 12
  98                          "org/pegasus/jmpi/CIMException",    // 13
  99 schuur        1.1        "java/math/BigInteger",             // 14
 100                          "org/pegasus/jmpi/CIMProperty",     // 15
 101                    
 102                          "org/pegasus/jmpi/CIMOMHandle",     // 16
 103                          "org/pegasus/jmpi/CIMClass",        // 17
 104                          "org/pegasus/jmpi/CIMInstance",     // 18
 105                          "org/pegasus/jmpi/CIMValue",        // 19
 106 schuur        1.3        "java/lang/Object",                 // 20
 107                          "java/lang/Throwable",              // 21
 108                          "java/lang/String",                 // 22
 109 schuur        1.1        "org/pegasus/jmpi/JarClassLoader",  // 23
 110 schuur        1.3        "org/pegasus/jmpi/CIMDateTime",     // 24
 111                          "org/pegasus/jmpi/SelectExp",       // 25
 112 schuur        1.5        "org/pegasus/jmpi/CIMQualifier",    // 26
 113                          "org/pegasus/jmpi/CIMQualifierType",// 27
 114                          "org/pegasus/jmpi/CIMFlavor",       // 28
 115 schuur        1.7        "org/pegasus/jmpi/CIMArgument",     // 29
 116                          "org/pegasus/jmpi/CIMInstanceException",    // 30
 117 schuur        1.1  };
 118                    
 119                    
 120                    const METHOD_STRUCT instanceMethodNames[]={
 121 schuur        1.3  /*00*/ { 0, "<init>",        "()V" },
 122 schuur        1.1  /*01*/ { 1, "<init>",        "(Z)V" },
 123                    /*02*/ { 2, "<init>",        "(B)V" },
 124                    /*03*/ { 3, "<init>",        "(S)V" },
 125                    /*04*/ { 4, "<init>",        "(I)V" },
 126                    /*05*/ { 5, "<init>",        "(J)V" },    // ???
 127                    /*06*/ { 6, "<init>",        "(F)V" },
 128                    /*07*/ { 7, "<init>",        "(D)V" },
 129                    /*08*/ { 8, "<init>",        "(S)V" },
 130                    /*09*/ { 9, "<init>",        "(I)V" },
 131                    /*10*/ { 10,"<init>",        "(J)V" },
 132                    /*11*/ { 11,"<init>",        "(Ljava/math/BigInteger;)V" },
 133                    /*12*/ { 12,"<init>",        "(I)V" },
 134                    /*13*/ { 13,"<init>",        "(Ljava/lang/String;)V" },
 135                    /*14*/ { 15,"<init>",        "(I)V" },
 136                    /*15*/ { 0, "addElement",    "(Ljava/lang/Object;)V" },
 137                    
 138                    /*16*/ { 0, "elementAt",     "(I)Ljava/lang/Object;" },
 139 schuur        1.3  /*17*/ { 16,"<init>",        "(ILjava/lang/String;)V" },
 140 schuur        1.1  /*18*/ { 13,"<init>",        "(I)V" },
 141                    /*19*/ { 17,"<init>",        "(I)V" },
 142                    /*20*/ { 18,"<init>",        "(I)V" },
 143                    /*21*/ { 12,"<init>",        "(I)V" },
 144                    /*22*/ { 12,"cInst",         "()I" },
 145                    /*23*/ { 18,"cInst",         "()I" },
 146                    /*24*/ { 17,"cInst",         "()I" },
 147                    /*25*/ { 20,"toString",      "()Ljava/lang/String;" },
 148                    /*26*/ { 21,"getMessage",    "()Ljava/lang/String;" },
 149                    /*27*/ { 13,"getID",         "()Ljava/lang/String;" },
 150                    /*28*/ { 0, "size",          "()I" },
 151                    /*29*/ { 15,"cInst",         "()I" },
 152                    /*30*/ { 16,"getClass",      "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 153                    /*31*/ { 0, "removeElementAt",     "(I)V" },
 154                    /*32*/ { 19,"cInst",         "()I" },
 155 schuur        1.7  /*33*/ { 13,"<init>",        "(ILjava/lang/String;)V" },
 156                    /*34*/ { 13,"getCode",       "()I" },
 157 r.kieninger   1.11 /*35*/ { 24,"<init>",        "(I)V" },
 158 schuur        1.7  /*36*/ { 25,"<init>",        "(I)V" },
 159                    /*37*/ { 26,"<init>",        "(I)V" },
 160                    /*38*/ { 28,"<init>",        "(I)V" },
 161                    /*38*/ { 28,"getFlavor",     "()I" },
 162                    /*39*/ { 29,"cInst",         "()I" },
 163                    /*40*/ { 29,"<init>",        "(I)V" },
 164                    /*41*/ { 13,"<init>",        "()V" },
 165                    /*42*/ { 13,"<init>",        "(Ljava/lang/String;)V" },
 166                    /*43*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;)V" },
 167                    /*44*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
 168                    /*45*/ { 13,"<init>",        "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },
 169 mark.hamzy    1.23 /*47*/ { 19,"<init>",        "(I)V" },
 170 schuur        1.1  };
 171                    
 172                    const METHOD_STRUCT staticMethodNames[]={
 173                          { 14, "valueOf",      "(J)Ljava/math/BigInteger;" },
 174                          { 23, "load",         "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 175                    };
 176                    
 177                    
 178                    static int methodInitDone=0;
 179                    
 180                    jclass classRefs[sizeof(classNames)/sizeof(char*)];
 181                    jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)];
 182                    jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)];
 183 mark.hamzy    1.20 
 184                    //static jclass providerClassRef;
 185 schuur        1.1  
 186                    jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) {
 187                      jclass localRefCls=env->FindClass(name);
 188 mark.hamzy    1.16 
 189 mark.hamzy    1.18   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: localRefCls = "<<PEGASUS_STD(hex)<<(int)localRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));
 190 mark.hamzy    1.16 
 191                      if (localRefCls==NULL)
 192                         return JNI_FALSE;
 193                    
 194 schuur        1.1    jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
 195 mark.hamzy    1.16 
 196 schuur        1.1    env->DeleteLocalRef(localRefCls);
 197 mark.hamzy    1.16 
 198 schuur        1.1    return globalRefCls;
 199                    }
 200                    
 201                    JMPIjvm::JMPIjvm() {
 202                       initJVM();
 203                    }
 204                    
 205                    JMPIjvm::~JMPIjvm() {
 206 schuur        1.7  
 207 schuur        1.1  }
 208                    
 209                    int JMPIjvm::cacheIDs(JNIEnv *env) {
 210 mark.hamzy    1.16    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));
 211                    
 212                       if (methodInitDone==1)
 213                          return JNI_TRUE;
 214                       if (methodInitDone==-1)
 215                          return JNI_FALSE;
 216 schuur        1.1  
 217                       methodInitDone=-1;
 218 mark.hamzy    1.16 
 219 schuur        1.1     for (unsigned i=0; i<(sizeof(classNames)/sizeof(char*)); i++) {
 220 mark.hamzy    1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl));
 221                          if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)
 222                          {
 223                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error: Count not find global class ref for "<<classNames[i]<<PEGASUS_STD(endl));
 224                    
 225                             return JNI_FALSE;
 226                          }
 227 schuur        1.1     }
 228 schuur        1.7  
 229 schuur        1.1     for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)); j++) {
 230 mark.hamzy    1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
 231                          if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],
 232                                                                     instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL)
 233                          {
 234                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
 235 schuur        1.1           return 0;
 236 mark.hamzy    1.17       }
 237 mark.hamzy    1.16    }
 238 schuur        1.1  
 239                       for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)); k++) {
 240 mark.hamzy    1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
 241                          if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],
 242                                                                         staticMethodNames[k].methodName,staticMethodNames[k].signature))==NULL)
 243                          {
 244                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
 245                             return 0;
 246                          }
 247                       }
 248                    
 249                       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));
 250                    
 251 schuur        1.1     methodInitDone=1;
 252 mark.hamzy    1.16 
 253 schuur        1.1     return JNI_TRUE;
 254                    }
 255                    
 256                    static void throwCIMException(JNIEnv *env,char *e) {
 257                       env->ThrowNew(classRefs[13],e);
 258                    }
 259                    
 260 schuur        1.3  int JMPIjvm::destroyJVM()
 261                    {
 262 mark.hamzy    1.16    DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<<PEGASUS_STD(endl));
 263                    
 264 schuur        1.3     #ifdef JAVA_DESTROY_VM_WORKS
 265                       if (jvm!=NULL) {
 266                          JvmVector *jv;
 267                          attachThread(&jv);
 268                          jvm->DestroyJavaVM();
 269                          jvm=NULL;
 270                          return 0;
 271                       }
 272                       #endif
 273 mark.hamzy    1.16 
 274 schuur        1.3     return -1;
 275                    }
 276                    
 277 schuur        1.1  int JMPIjvm::initJVM()
 278                    {
 279                       JavaVMInitArgs vm_args;
 280                       jint res;
 281 mark.hamzy    1.16    char *envstring;
 282 schuur        1.1     JNIEnv *env;
 283 mark.hamzy    1.16    JavaVMOption *poptions = 0;
 284                       int maxoption = 0;
 285                       Array<std::string> JNIoptions;
 286                       static const char *aENVoptions[][2] = {
 287                          { "CLASSPATH",                           "-Djava.class.path=" },
 288                          { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx" },
 289                          { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms" },
 290                          { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss" }
 291                       };
 292                       std::ostringstream oss;
 293 schuur        1.9  
 294                    #ifdef PEGASUS_DEBUG
 295 mark.hamzy    1.16    if (getenv("PEGASUS_JMPI_TRACE")) JMPIjvm::trace=1;
 296                       else JMPIjvm::trace=0;
 297 schuur        1.9  #else
 298 mark.hamzy    1.16    JMPIjvm::trace=0;
 299 schuur        1.9  #endif
 300 schuur        1.2  
 301 mark.hamzy    1.16    DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl));
 302                    
 303 schuur        1.1     jv.initRc=0;
 304                    
 305 mark.hamzy    1.16    envstring=getenv("CLASSPATH");
 306                       if (envstring==NULL) {
 307                          jv.initRc=1;
 308                    
 309                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl));
 310                    
 311                          return -1;
 312                       }
 313                    
 314 mark.hamzy    1.20 ///JNIoptions.append ("-Djava.compiler=NONE");
 315                    ///maxoption++;
 316                    
 317 mark.hamzy    1.16    for (Uint32 i = 0; i < (int)(sizeof (aENVoptions)/sizeof (aENVoptions[0])); i++)
 318                       {
 319                          const char *name = aENVoptions[i][0];
 320                    
 321                          envstring = getenv (name);
 322                          if (envstring)
 323                          {
 324                             maxoption++;
 325                    
 326                             oss.str ("");
 327                             oss << aENVoptions[i][1] << envstring;
 328                    
 329                             JNIoptions.append (oss.str ());
 330                    
 331                             DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << name << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
 332                          }
 333                       }
 334                    
 335                       poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption));
 336                       if (!poptions)
 337                       {
 338 schuur        1.1        jv.initRc=1;
 339 mark.hamzy    1.16 
 340                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl));
 341                    
 342 schuur        1.1        return -1;
 343                       }
 344                    
 345 mark.hamzy    1.16    for (Uint32 i=0; i < JNIoptions.size(); i++)
 346                       {
 347                          poptions[i].optionString = (char *)JNIoptions[i].c_str ();
 348                    
 349                          DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));
 350                       }
 351                    
 352 schuur        1.1     vm_args.version=0x00010002;
 353 mark.hamzy    1.16    vm_args.options=poptions;
 354                       vm_args.nOptions=maxoption;
 355 schuur        1.1     vm_args.ignoreUnrecognized=JNI_TRUE;
 356                    
 357                       res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 358 mark.hamzy    1.16 
 359                       if (poptions)
 360                       {
 361                          free (poptions);
 362                       }
 363                    
 364 schuur        1.1     if (res!=0) {
 365 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));
 366                    
 367 schuur        1.1        exit(1);
 368                       }
 369                       jv.jvm=jvm;
 370                       jv.env=env;
 371                    
 372                       if (cacheIDs(env)==1) {
 373                          jv.classRefs=classRefs;
 374                          jv.instMethodIDs=instanceMethodIDs;
 375                       }
 376                    
 377                       if (env->ExceptionOccurred()) {
 378                          env->ExceptionDescribe();
 379                          exit(1);
 380                       }
 381                    
 382                       return res;
 383                    }
 384                    
 385                    JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) {
 386                       JNIEnv* env;
 387                       if (jvm==NULL) initJVM();
 388 schuur        1.1     jvm->AttachCurrentThread((void**)&env,NULL);
 389                       *jvp=&jv;
 390                       return env;
 391                    }
 392                    
 393                    void JMPIjvm::detachThread() {
 394                       jvm->DetachCurrentThread();
 395                    }
 396                    
 397                    jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
 398                         const char *cn, jclass *cls)
 399                    {
 400 mark.hamzy    1.17    jobject gProv=NULL;
 401                       jclass scls=NULL;
 402 mark.hamzy    1.16 
 403 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jar = "<<jar<<", cln = "<<cln<<", cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 404 mark.hamzy    1.17 
 405                       _objectTable.lookup(cln,gProv);
 406                       _classTable.lookup(cln,scls);
 407 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));
 408 mark.hamzy    1.16 
 409 schuur        1.1     if (gProv) {
 410                          *cls=scls;
 411                          return gProv;
 412                       }
 413                    
 414                       /*
 415 mark.hamzy    1.16    DDD(PEGASUS_STD(cout)<<"--- jar: "<<jar<<PEGASUS_STD(endl));
 416                       DDD(PEGASUS_STD(cout)<<"--- cln: "<<cln<<PEGASUS_STD(endl));
 417 schuur        1.1  
 418                       jstring jjar=env->NewStringUTF((const char*)jar.getCString());
 419                       jstring jcln=env->NewStringUTF((const char*)cln.getCString());
 420                    
 421                       jclass jcls=(jclass)env->CallStaticObjectMethod(classRefs[23],staticMethodIDs[1],
 422                          jjar,jcln);
 423                       if (env->ExceptionCheck()) {
 424                          env->ExceptionDescribe();
 425 mark.hamzy    1.16       PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl);
 426                    ////////return NULL;
 427 schuur        1.1     }
 428                    */
 429                    
 430                       scls=getGlobalClassRef(env,(const char*)cln.getCString());
 431                       if (env->ExceptionCheck()) {
 432 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 433 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 434                    
 435 schuur        1.1        return NULL;
 436                       }
 437 mark.hamzy    1.17    *cls=scls;
 438                    
 439                       if (scls)
 440                       {
 441 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 442 mark.hamzy    1.17       _classTable.insert(cln,scls);
 443                       }
 444 schuur        1.1  
 445                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 446                       jobject lProv=env->NewObject(*cls,id);
 447                       gProv=(jobject)env->NewGlobalRef(lProv);
 448                       if (env->ExceptionCheck()) {
 449 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 450 schuur        1.1        return NULL;
 451                       }
 452 mark.hamzy    1.17 
 453                       if (gProv)
 454                       {
 455 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 456 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 457                       }
 458                    
 459 schuur        1.1     return gProv;
 460                    }
 461                    
 462                    jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
 463                    {
 464 mark.hamzy    1.17    String cln = cn;
 465                       jobject gProv=NULL;
 466                       jclass scls=NULL;
 467 mark.hamzy    1.16 
 468 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 469 mark.hamzy    1.17 
 470                       _objectTable.lookup(cln,gProv);
 471                       _classTable.lookup(cln,scls);
 472 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));
 473 mark.hamzy    1.16 
 474 schuur        1.1     if (gProv) {
 475                          *cls=scls;
 476                          return gProv;
 477                       }
 478                    
 479                       scls=getGlobalClassRef(env,cn);
 480                       if (env->ExceptionCheck()) {
 481 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 482 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 483                    
 484 schuur        1.1        return NULL;
 485                       }
 486 mark.hamzy    1.17    *cls=scls;
 487                    
 488                       if (scls)
 489                       {
 490 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 491 mark.hamzy    1.17       _classTable.insert(cln,scls);
 492                       }
 493 schuur        1.1  
 494                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 495                       jobject lProv=env->NewObject(*cls,id);
 496                       gProv=(jobject)env->NewGlobalRef(lProv);
 497                       if (env->ExceptionCheck()) {
 498 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 499 schuur        1.1        return NULL;
 500                       }
 501 mark.hamzy    1.17 
 502                       if (gProv)
 503                       {
 504 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 505 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 506                       }
 507                    
 508 schuur        1.1     return gProv;
 509                    }
 510                    
 511                    void JMPIjvm::checkException(JNIEnv *env)
 512                    {
 513                       if (env->ExceptionCheck()) {
 514 schuur        1.7        jstring jMsg=NULL,jId=NULL;
 515                          int code;
 516                          const char *cp;
 517                          String msg=String::EMPTY,id=String::EMPTY;
 518                    
 519 schuur        1.1        jthrowable err=env->ExceptionOccurred();
 520 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 521 schuur        1.7        if (env->IsInstanceOf(err,JMPIjvm::jv.CIMExceptionClassRef)) {
 522                             env->ExceptionClear();
 523                             if (err) {
 524                                jMsg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
 525                                code=(int)env->CallIntMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
 526                                jId=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
 527                                if (jId) {
 528                                   cp=env->GetStringUTFChars(jId,NULL);
 529                                   id=String(cp);
 530                                   env->ReleaseStringUTFChars(jId,cp);
 531                                }
 532                    
 533                                if (jMsg) {
 534                                   cp=env->GetStringUTFChars(jMsg,NULL);
 535                                   msg=String(cp);
 536                                   env->ReleaseStringUTFChars(jMsg,cp);
 537                                }
 538 mark.hamzy    1.16 
 539                                DDD(PEGASUS_STD(cerr)<<"--- throwing Pegasus exception: "<<code<<" "<<id<<" ("<<msg<<")"<<PEGASUS_STD(endl));
 540                    
 541 schuur        1.7              throw CIMException((CIMStatusCode)code,id+" ("+msg+")");
 542 mark.hamzy    1.17          }
 543 schuur        1.7        }
 544                          else {
 545                             env->ExceptionDescribe();
 546                             exit(13);
 547 schuur        1.1        }
 548 schuur        1.7    }
 549 schuur        1.2  }
 550 schuur        1.1  
 551                    /**************************************************************************
 552                     * name         - NewPlatformString
 553                     * description  - Returns a new Java string object for the specified
 554                     *                platform string.
 555                     * parameters   - env
 556                     *                s     Platform encoded string
 557                     * returns      - Java string object pointer or null (0)
 558                     **************************************************************************/
 559                    jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
 560                    {
 561                        size_t len = strlen(s);
 562                        jclass cls;
 563                        jmethodID mid;
 564                        jbyteArray ary;
 565                    
 566                        NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
 567                        NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
 568                        ary = (*env).NewByteArray((jsize)len);
 569                        if (ary != 0) {
 570                            jstring str = 0;
 571 schuur        1.1          (*env).SetByteArrayRegion(ary, 0, (jsize)len,
 572                                                       (jbyte *)s);
 573                            if (!(*env).ExceptionOccurred()) {
 574                                str = (jstring)(*env).NewObject(cls, mid, ary);
 575                            }
 576                            (*env).DeleteLocalRef(ary);
 577                            return str;
 578                        }
 579                        return 0;
 580                    }
 581                    
 582                    
 583                    /**************************************************************************
 584                     * name         - NewPlatformStringArray
 585                     * description  - Returns a new array of Java string objects for the specified
 586                     *                array of platform strings.
 587                     * parameters   - env
 588                     *                strv      Platform encoded string array
 589                     *                strc      Number of strings in strv
 590                     * returns      - Java string array object pointer
 591                     **************************************************************************/
 592 schuur        1.1  jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
 593                    {
 594                        jarray cls;
 595                        jarray ary;
 596                        int i;
 597                    
 598                        NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
 599                        NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
 600                        for (i = 0; i < strc; i++) {
 601                            jstring str = NewPlatformString(env, *strv++);
 602                            NULL_CHECK0(str);
 603                            (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
 604                            (*env).DeleteLocalRef(str);
 605                        }
 606                        return (jobjectArray)ary;
 607                    }
 608                    
 609                    
 610                    
 611                    
 612                    
 613 schuur        1.1  extern "C" {
 614                    
 615                    
 616                    void throwCimException(JNIEnv *jEnv, CIMException & e) {
 617                          JMPIjvm::cacheIDs(jEnv);
 618                          jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],(jint)e.getCode());
 619                          jEnv->Throw((jthrowable)ev);
 620                    }
 621                    
 622                    void throwFailedException(JNIEnv *jEnv) {
 623                          JMPIjvm::cacheIDs(jEnv);
 624                          jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],1);
 625                          jEnv->Throw((jthrowable)ev);
 626                    }
 627                    
 628                    void throwNotSupportedException(JNIEnv *jEnv) {
 629                          JMPIjvm::cacheIDs(jEnv);
 630                          jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],7);
 631                          jEnv->Throw((jthrowable)ev);
 632                    }
 633                    
 634 schuur        1.1  
 635 schuur        1.7  
 636                    
 637                    // -------------------------------------
 638                    // ---
 639                    // -		CIMException
 640                    // ---
 641                    // -------------------------------------
 642                    
 643                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new
 644                      (JNIEnv *jEnv, jobject jThs) {
 645                       jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[41]);
 646                    }
 647                    
 648                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS
 649                      (JNIEnv *jEnv, jobject jThs, jstring jM) {
 650                       jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[42],jM);
 651                    }
 652                    
 653                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO
 654                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {
 655                       jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[43],jM,jO1);
 656 schuur        1.7  }
 657                    
 658                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO
 659                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {
 660                       jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[44],jM,jO1,jO2);
 661                    }
 662                    
 663                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO
 664                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {
 665                       jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[45],jM,jO1,jO2,jO3);
 666                    }
 667                    
 668                    
 669                    
 670 schuur        1.1  // -------------------------------------
 671                    // ---
 672                    // -		CIMOMHandle
 673                    // ---
 674                    // -------------------------------------
 675                    
 676 schuur        1.7  CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) {
 677                       CIMPropertyList pl;
 678                       if (l) {
 679                          Array<CIMName> n;
 680                          for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {
 681                             jstring jObj=(jstring)jEnv->GetObjectArrayElement(l,i);
 682                             const char *pn=jEnv->GetStringUTFChars(jObj,NULL);
 683                             n.append(pn);
 684                             jEnv->ReleaseStringUTFChars(jObj,pn);
 685                          }
 686                          pl.set(n);
 687                       }
 688                       return pl;
 689                    }
 690                    
 691 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
 692 schuur        1.7    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo,
 693 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
 694                    {
 695                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 696                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 697                       CIMPropertyList   pl;
 698                       OperationContext  ctx;
 699                    
 700                       if (jPl)
 701                          pl=getList(jEnv,jPl);
 702                       else
 703                          pl=CIMPropertyList();
 704                    
 705 schuur        1.1     try {
 706 mark.hamzy    1.20       CIMClass cls=ch->getClass(ctx,cop->getNameSpace(),
 707                                                    cop->getClassName(),
 708                                                    (Boolean)lo,
 709                                                    (Boolean)iq,
 710                                                    (Boolean)ic,
 711                                                    pl);
 712                    
 713                          return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
 714 schuur        1.1     }
 715                       Catch(jEnv);
 716 mark.hamzy    1.20 
 717 schuur        1.1     return 0;
 718                    }
 719                    
 720 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass
 721 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 722 mark.hamzy    1.20 {
 723                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 724                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 725 mark.hamzy    1.22    CIMClass         *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 726 mark.hamzy    1.20    OperationContext  ctx;
 727                    
 728 schuur        1.7     try {
 729                          ch->createClass(ctx,cop->getNameSpace(),*cl);
 730                       }
 731                       Catch(jEnv);
 732                    }
 733                    
 734                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass
 735 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 736                    {
 737                       CIMOMHandle     *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 738                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 739                       CIMClass        *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 740 schuur        1.7     OperationContext ctx;
 741 mark.hamzy    1.20 
 742 schuur        1.7     try {
 743                         ch->modifyClass(ctx,cop->getNameSpace(),*cl);
 744                       }
 745                       Catch(jEnv);
 746                    }
 747                    
 748                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass
 749 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 750                    {
 751                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 752                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 753                       OperationContext  ctx;
 754 schuur        1.7  
 755                       try {
 756                          ch->deleteClass(ctx,cop->getNameSpace(),cop->getClassName());
 757                       }
 758                       Catch(jEnv);
 759                    }
 760                    
 761                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames
 762 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
 763                    {
 764                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 765                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 766                       CIMNamespaceName  ns  = cop->getNameSpace();
 767                       OperationContext  ctx;
 768                    
 769 schuur        1.7     try {
 770 mark.hamzy    1.20       Array<CIMName>        enm   = ch->enumerateClassNames(ctx,cop->getNameSpace(),cop->getClassName(),deep);
 771                          Array<CIMObjectPath> *enmop = new Array<CIMObjectPath>();
 772                    
 773 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
 774                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
 775                          }
 776 mark.hamzy    1.20 
 777                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
 778 schuur        1.7     }
 779                       Catch(jEnv);
 780 mark.hamzy    1.20 
 781 schuur        1.7     return 0;
 782                    }
 783                    
 784                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses
 785                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
 786 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic)
 787                    {
 788                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 789                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 790                       OperationContext  ctx;
 791                    
 792 schuur        1.1     try {
 793 mark.hamzy    1.20       Array<CIMClass> en=ch->enumerateClasses(ctx,
 794                                                                  cop->getNameSpace(),
 795                                                                  cop->getClassName(),
 796                                                                  deep,
 797                                                                  (Boolean)lo,
 798                                                                  iq,
 799                                                                  ic);
 800                    
 801                          return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(en));
 802 schuur        1.7     }
 803                       Catch(jEnv);
 804 mark.hamzy    1.20 
 805 schuur        1.7     return 0;
 806                    }
 807                    
 808                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
 809                       (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic,
 810 mark.hamzy    1.20         jobjectArray jPl)
 811                    {
 812                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 813                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 814                       OperationContext  ctx;
 815                       CIMPropertyList   pl;
 816                    
 817                       if (jPl)
 818                          pl=getList(jEnv,jPl);
 819                       else
 820                          pl=CIMPropertyList();
 821 schuur        1.7  
 822                       try {
 823 mark.hamzy    1.20       CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,
 824                                                                            cop->getNameSpace(),
 825                                                                            *cop,
 826                                                                            (Boolean)lo,
 827                                                                            (Boolean)iq,
 828                                                                            (Boolean)ic,
 829                                                                            pl));
 830                          return DEBUG_ConvertCToJava (CIMInstance*, jint, inst);
 831 schuur        1.7     }
 832                       Catch(jEnv);
 833 mark.hamzy    1.20 
 834 schuur        1.7     return -1;
 835                    }
 836                    
 837                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
 838 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 839                    {
 840                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 841                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 842                       OperationContext  ctx;
 843 schuur        1.7  
 844                       try {
 845                          ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
 846                       }
 847                       Catch(jEnv);
 848                    }
 849                    
 850                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance
 851 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi)
 852 mark.hamzy    1.20 {
 853                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 854                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 855 mark.hamzy    1.22    CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
 856 mark.hamzy    1.20    OperationContext  ctx;
 857                    
 858 schuur        1.7     try {
 859                          ci->setPath(*cop);
 860 mark.hamzy    1.20 
 861 schuur        1.7        CIMObjectPath obj=ch->createInstance(ctx,cop->getNameSpace(),*ci);
 862 mark.hamzy    1.20 
 863                          return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
 864 schuur        1.7     }
 865                       Catch(jEnv);
 866 mark.hamzy    1.20 
 867 schuur        1.7     return 0;
 868                    }
 869                    
 870                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance
 871                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi,
 872 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
 873                    {
 874                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 875                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 876                       CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
 877                       CIMPropertyList   pl  = getList(jEnv,jPl);
 878                       OperationContext  ctx;
 879                    
 880 schuur        1.7     try {
 881                          ci->setPath(*cop);
 882                          ch->modifyInstance(ctx,cop->getNameSpace(),*ci,(Boolean)iq,pl);
 883                       }
 884                       Catch(jEnv);
 885                    }
 886                    
 887                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames
 888 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
 889                    {
 890                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 891                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 892                       OperationContext  ctx;
 893                    
 894 schuur        1.7     try {
 895                          Array<CIMObjectPath> enm=ch->enumerateInstanceNames(ctx,
 896 mark.hamzy    1.20                                                           cop->getNameSpace(),
 897                                                                              cop->getClassName()); //,(Boolean)deep);
 898                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
 899 schuur        1.7     }
 900                       Catch(jEnv);
 901 mark.hamzy    1.20 
 902 schuur        1.7     return 0;
 903                    }
 904                    
 905                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances
 906                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
 907 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl)
 908                    {
 909                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 910                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 911                       CIMPropertyList   pl;
 912                       OperationContext  ctx;
 913                    
 914                       if (jPl)
 915                          pl=getList(jEnv,jPl);
 916                       else
 917                          pl=CIMPropertyList();
 918                    
 919 schuur        1.7     try {
 920 mark.hamzy    1.20       Array<CIMInstance> en=ch->enumerateInstances(ctx,
 921                                                                       cop->getNameSpace(),
 922                                                                       cop->getClassName(),
 923                                                                       deep,
 924                                                                       lo,
 925                                                                       iq,
 926                                                                       ic,
 927                                                                       pl);
 928                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(en));
 929 schuur        1.7     }
 930                       Catch(jEnv);
 931 mark.hamzy    1.20 
 932 schuur        1.7     return 0;
 933                    }
 934                    
 935                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery
 936 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jQuery, jstring jQl)
 937                    {
 938                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 939                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 940                       OperationContext  ctx;
 941                       const char       *str = jEnv->GetStringUTFChars(jQuery,NULL);
 942                       String            query(str);
 943 schuur        1.7  
 944                       jEnv->ReleaseStringUTFChars(jQuery,str);
 945                       str=jEnv->GetStringUTFChars(jQl,NULL);
 946 mark.hamzy    1.20 
 947 schuur        1.7     String ql(str);
 948 mark.hamzy    1.20 
 949 schuur        1.7     jEnv->ReleaseStringUTFChars(jQl,str);
 950                    
 951                       try {
 952 mark.hamzy    1.20       Array<CIMObject>    enm=ch->execQuery(ctx,cop->getNameSpace(),ql,query);
 953 schuur        1.7        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
 954 mark.hamzy    1.20 
 955 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
 956                             enmInst->append(CIMInstance(enm[i]));
 957 schuur        1.1        }
 958 mark.hamzy    1.20 
 959                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
 960 schuur        1.1     }
 961                       Catch(jEnv);
 962 mark.hamzy    1.20 
 963 schuur        1.7     return 0;
 964 schuur        1.1  }
 965                    
 966 schuur        1.7  
 967 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
 968 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN)
 969                    {
 970                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 971                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 972                       OperationContext  ctx;
 973                       const char       *str = jEnv->GetStringUTFChars(jN,NULL);
 974 schuur        1.3  
 975 schuur        1.1     try {
 976                          CIMName prop(str);
 977                          CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
 978                          jEnv->ReleaseStringUTFChars(jN,str);
 979 mark.hamzy    1.20 
 980                          return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
 981 schuur        1.1     }
 982                       Catch(jEnv);
 983 mark.hamzy    1.20 
 984 schuur        1.1     return -1;
 985                    }
 986                    
 987 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty
 988 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jPn, jint jV)
 989                    {
 990                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 991                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 992                       OperationContext  ctx;
 993                       CIMValue         *val = (CIMValue*)jCop;
 994                       const char       *str = jEnv->GetStringUTFChars(jPn,NULL);
 995                       CIMName           pName(str);
 996                    
 997 schuur        1.7     jEnv->ReleaseStringUTFChars(jPn,str);
 998                       try {
 999                          ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);
1000                       }
1001                       Catch(jEnv);
1002                    }
1003                    
1004 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod
1005                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut)
1006                    {
1007                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1008                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1009                       OperationContext  ctx;
1010                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1011                       CIMName           method(str);
1012 schuur        1.7  
1013                       jEnv->ReleaseStringUTFChars(jMn,str);
1014                    
1015                       Array<CIMParamValue> in;
1016                       Array<CIMParamValue> out;
1017                    
1018 mark.hamzy    1.23    for (int i = 0, m = jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i < m; i++) {
1019 schuur        1.7         JMPIjvm::checkException(jEnv);
1020 mark.hamzy    1.20 
1021 mark.hamzy    1.23        jobject jProp = jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);
1022                    
1023 schuur        1.7         JMPIjvm::checkException(jEnv);
1024 mark.hamzy    1.20 
1025                           jint         jp = jEnv->CallIntMethod(jProp,instanceMethodIDs[29]);
1026                           CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1027                    
1028 schuur        1.7         JMPIjvm::checkException(jEnv);
1029 mark.hamzy    1.20 
1030 schuur        1.7         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
1031                       }
1032                       try {
1033 mark.hamzy    1.23       CIMValue *val = new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1034 schuur        1.7  
1035                          for (int i=0,m=out.size(); i<m; i++) {
1036 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
1037                             const CIMValue       v    = parm.getValue();
1038                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
1039                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
1040                             jobject              prop = jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jp);
1041                    
1042 schuur        1.7           jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);
1043                          }
1044 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1045                       }
1046 schuur        1.7     Catch(jEnv);
1047 mark.hamzy    1.20 
1048 schuur        1.7     return 0;
1049                    }
1050 schuur        1.1  
1051 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24
1052                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,
1053 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
1054                    {
1055                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1056                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1057                       OperationContext  ctx;
1058                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1059 schuur        1.7     CIMName method(str);
1060 mark.hamzy    1.20 
1061 schuur        1.7     jEnv->ReleaseStringUTFChars(jMn,str);
1062                    
1063                       Array<CIMParamValue> in;
1064                       Array<CIMParamValue> out;
1065 schuur        1.3  
1066 schuur        1.7     for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
1067                           JMPIjvm::checkException(jEnv);
1068 mark.hamzy    1.20 
1069 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
1070                           JMPIjvm::checkException(jEnv);
1071 mark.hamzy    1.20 
1072                           jint           jp = jEnv->CallIntMethod(jArg,instanceMethodIDs[39]);
1073                           CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
1074                    
1075 schuur        1.7         JMPIjvm::checkException(jEnv);
1076 mark.hamzy    1.20 
1077 schuur        1.7         in.append(*p);
1078                       }
1079 schuur        1.1     try {
1080 schuur        1.7        CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1081                    
1082                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
1083 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
1084                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
1085 mark.hamzy    1.20 
1086 mark.hamzy    1.17          jEnv->SetObjectArrayElement(jOut,i,
1087 mark.hamzy    1.20                                      jEnv->NewObject(classRefs[29],instanceMethodIDs[40],jParm));
1088 schuur        1.7        }
1089 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1090 schuur        1.1     }
1091                       Catch(jEnv);
1092 mark.hamzy    1.20 
1093 schuur        1.7     return 0;
1094 schuur        1.1  }
1095                    
1096 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames
1097                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1098 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
1099                    {
1100                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1101                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1102                       OperationContext  ctx;
1103                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1104 schuur        1.3  
1105 schuur        1.7     CIMName assocClass(str);
1106 mark.hamzy    1.23 
1107 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1108 mark.hamzy    1.23 
1109 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1110 mark.hamzy    1.23 
1111 schuur        1.7     CIMName resultClass(str);
1112 mark.hamzy    1.23 
1113 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1114 mark.hamzy    1.23 
1115 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1116 mark.hamzy    1.23 
1117 schuur        1.7     String role(str);
1118 mark.hamzy    1.23 
1119 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1120 mark.hamzy    1.23 
1121 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1122 mark.hamzy    1.23 
1123 schuur        1.7     String resultRole(str);
1124 mark.hamzy    1.23 
1125 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1126                    
1127 schuur        1.1     try {
1128 schuur        1.7        Array<CIMObjectPath> enm=ch->associatorNames(ctx,
1129 mark.hamzy    1.23                                                    cop->getNameSpace(),
1130                                                                       *cop,
1131                                                                       assocClass,
1132                                                                       resultClass,
1133                                                                       role,
1134                                                                       resultRole);
1135                    
1136 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1137 schuur        1.7     }
1138                       Catch(jEnv);
1139 mark.hamzy    1.20 
1140 schuur        1.7     return 0;
1141                    }
1142                    
1143                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIM__1associators
1144                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1145                       jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
1146 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1147                    {
1148                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1149                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1150                       OperationContext  ctx;
1151                       CIMPropertyList   pl  = getList(jEnv,jPl);
1152                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1153 schuur        1.7  
1154                       CIMName assocClass(str);
1155 mark.hamzy    1.23 
1156 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1157 mark.hamzy    1.23 
1158 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1159 mark.hamzy    1.23 
1160 schuur        1.7     CIMName resultClass(str);
1161 mark.hamzy    1.23 
1162 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1163 mark.hamzy    1.23 
1164 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1165 mark.hamzy    1.23 
1166 schuur        1.7     String role(str);
1167 mark.hamzy    1.23 
1168 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1169 mark.hamzy    1.23 
1170 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1171 mark.hamzy    1.23 
1172 schuur        1.7     String resultRole(str);
1173 mark.hamzy    1.23 
1174 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1175                    
1176                       try {
1177 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->associators(ctx,
1178                                                                        cop->getNameSpace(),
1179                                                                        *cop,
1180                                                                        assocClass,
1181                                                                        resultClass,
1182                                                                        role,
1183                                                                        resultRole,
1184                                                                        (Boolean)includeQualifiers,
1185                                                                        (Boolean)includeClassOrigin,
1186                                                                        pl);
1187                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1188                    
1189 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1190                             enmInst->append(CIMInstance(enm[i]));
1191 schuur        1.1        }
1192 mark.hamzy    1.23 
1193 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1194 schuur        1.1     }
1195                       Catch(jEnv);
1196 mark.hamzy    1.20 
1197 schuur        1.7     return 0;
1198 schuur        1.1  }
1199                    
1200 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames
1201                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1202 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
1203                    {
1204                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1205                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1206                       OperationContext  ctx;
1207                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1208 schuur        1.7  
1209                       CIMName assocClass(str);
1210 mark.hamzy    1.23 
1211 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1212 mark.hamzy    1.23 
1213 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1214 mark.hamzy    1.23 
1215 schuur        1.7     String role(str);
1216 mark.hamzy    1.23 
1217 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1218                    
1219                       try {
1220 mark.hamzy    1.23       Array<CIMObjectPath> enm = ch->referenceNames(ctx,
1221                                                                        cop->getNameSpace(),
1222                                                                        *cop,
1223                                                                        assocClass,
1224                                                                        role);
1225                    
1226 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1227 schuur        1.7     }
1228                       Catch(jEnv);
1229 mark.hamzy    1.20 
1230 schuur        1.7     return 0;
1231                    }
1232 schuur        1.1  
1233 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references
1234                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1235                       jstring jAssocClass, jstring jRole,
1236 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1237                    {
1238                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1239                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1240                       OperationContext  ctx;
1241                       CIMPropertyList   pl  = getList(jEnv,jPl);
1242                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1243                       CIMName           assocClass(str);
1244 schuur        1.3  
1245 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1246 mark.hamzy    1.23 
1247 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1248 mark.hamzy    1.20 
1249 schuur        1.7     String role(str);
1250 mark.hamzy    1.20 
1251 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1252                    
1253 schuur        1.1     try {
1254 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->references(ctx,
1255                                                                       cop->getNameSpace(),
1256                                                                       *cop,
1257                                                                       assocClass,
1258                                                                       role,
1259                                                                       (Boolean)includeQualifiers,
1260                                                                       (Boolean)includeClassOrigin,
1261                                                                       pl);
1262                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1263                    
1264 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1265                             enmInst->append(CIMInstance(enm[i]));
1266                          }
1267 mark.hamzy    1.23 
1268 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1269 schuur        1.1     }
1270                       Catch(jEnv);
1271 mark.hamzy    1.20 
1272 schuur        1.7     return 0;
1273 schuur        1.1  }
1274                    
1275 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent
1276 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd)
1277                    {
1278                       CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1279                       CIMInstance *ind = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInd);
1280                       const char  *str = jEnv->GetStringUTFChars(jName,NULL);
1281                       String       name(str);
1282 schuur        1.1  
1283 schuur        1.3     jEnv->ReleaseStringUTFChars(jName,str);
1284                       str=jEnv->GetStringUTFChars(jNs,NULL);
1285 mark.hamzy    1.20 
1286 schuur        1.3     String ns(str);
1287 mark.hamzy    1.20 
1288 schuur        1.3     jEnv->ReleaseStringUTFChars(jNs,str);
1289                    
1290 schuur        1.8     CIMObjectPath ref(CIMObjectPath(ind->getPath()));
1291 mark.hamzy    1.20 
1292 schuur        1.8     ref.setNameSpace(ns);
1293                       ind->setPath(ref);
1294                    
1295 schuur        1.3     JMPIProviderManager::indProvRecord *prec;
1296                       OperationContext* context;
1297                    
1298                       if (JMPIProviderManager::provTab.lookup(name,prec)) {
1299                          if (prec->enabled) {
1300                             context=prec->ctx;
1301                             try {
1302                                prec->handler->deliver(*context, *ind);
1303                             }
1304                             Catch(jEnv);
1305                          }
1306                       }
1307                       else {
1308 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() "<<name<<" not found"<<PEGASUS_STD(endl));
1309 schuur        1.3     }
1310                    }
1311 schuur        1.1  
1312 mark.hamzy    1.21 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1finalize
1313                       (JNIEnv *jEnv, jobject jThs, jint jCh)
1314                    {
1315                       CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1316                    
1317                       delete ch;
1318                    
1319                       DEBUG_ConvertCleanup (jint, jCh);
1320                    }
1321                    
1322 schuur        1.1  // -------------------------------------
1323                    // ---
1324                    // -		CIMClass
1325                    // ---
1326                    // -------------------------------------
1327                    
1328                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
1329 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCls)
1330                    {
1331                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1332                    
1333 schuur        1.1     try {
1334 mark.hamzy    1.23       CIMInstance *ci = new CIMInstance(cls->getClassName());
1335 mark.hamzy    1.20 
1336 schuur        1.5        for (int i=0,m=cls->getQualifierCount(); i<m; i++) {
1337                             try {
1338                                ci->addQualifier(cls->getQualifier(i).clone());
1339 mark.hamzy    1.17          }
1340                             catch (Exception e) {}
1341 schuur        1.5        }
1342 schuur        1.1        for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
1343 mark.hamzy    1.23          CIMProperty cp = cls->getProperty(i);
1344                    
1345 schuur        1.1           ci->addProperty(cp.clone());
1346 mark.hamzy    1.23 
1347 schuur        1.5           for (int j=0, s=cp.getQualifierCount(); j<s; j++) {
1348                                try {
1349                                   ci->getProperty(i).addQualifier(cp.getQualifier(j));
1350 mark.hamzy    1.17             }
1351                                catch (Exception e) {}
1352                             }
1353 schuur        1.1        }
1354 mark.hamzy    1.23 
1355 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1356 schuur        1.1     }
1357                       Catch(jEnv);
1358 mark.hamzy    1.20 
1359 schuur        1.1     return 0;
1360                    }
1361                    
1362                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
1363 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls)
1364                    {
1365                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1366 r.kieninger   1.11 
1367 schuur        1.1     try {
1368                          const String &cn=cls->getClassName().getString();
1369                          jstring str=jEnv->NewStringUTF(cn.getCString());
1370 mark.hamzy    1.20 
1371 schuur        1.1        return str;
1372                       }
1373                       Catch(jEnv);
1374 mark.hamzy    1.20 
1375 schuur        1.1     return 0;
1376                    }
1377                    
1378                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
1379 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1380                    {
1381                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1382                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1383                       jint        rv  = -1;
1384                       Uint32      pos = cls->findQualifier(String(str));
1385                    
1386 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1387 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(cls->getQualifier(pos)));
1388                    
1389 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1390 mark.hamzy    1.20 
1391 schuur        1.1     return rv;
1392                    }
1393                    
1394                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
1395 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1396                    {
1397                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1398                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1399                       jint        rv  = -1;
1400                       Uint32      pos = cls->findProperty(CIMName(str));
1401                    
1402 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1403 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMProperty*, jint, new CIMProperty(cls->getProperty(pos)));
1404                    
1405 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1406 mark.hamzy    1.20 
1407 schuur        1.1     return rv;
1408                    }
1409                    
1410                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
1411 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ)
1412                    {
1413                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1414                       const char *str = jEnv->GetStringUTFChars(jQ,NULL);
1415                       Uint32      pos = cls->findQualifier(String(str));
1416                    
1417 schuur        1.1     jEnv->ReleaseStringUTFChars(jQ,str);
1418 mark.hamzy    1.20 
1419 schuur        1.1     return (jboolean)(pos!=PEG_NOT_FOUND);
1420                    }
1421                    
1422                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
1423 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1424                    {
1425                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1426 schuur        1.5  
1427 schuur        1.1     for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
1428 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(cls->getProperty(i));
1429                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1430 mark.hamzy    1.16 
1431 mark.hamzy    1.20       jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);
1432 mark.hamzy    1.16 
1433 schuur        1.1        jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1434                       }
1435 mark.hamzy    1.20 
1436 schuur        1.1     return jVec;
1437                    }
1438                    
1439 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
1440 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP)
1441                    {
1442                       CIMClass    *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1443                       CIMProperty *p   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
1444                    
1445 schuur        1.5     cls->addProperty(*p);
1446                    }
1447                    
1448                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
1449 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1450                    {
1451                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1452                    
1453 schuur        1.5     for (int i=cls->getPropertyCount()-1; i>=0; i--) {
1454                          cls->removeProperty(i);
1455                       }
1456                       for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {
1457 mark.hamzy    1.20       JMPIjvm::checkException(jEnv);
1458                    
1459 schuur        1.5        jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));
1460 mark.hamzy    1.20 
1461                          jint         jp = jEnv->CallIntMethod(o,instanceMethodIDs[29]);
1462                          CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1463                    
1464                          JMPIjvm::checkException(jEnv);
1465                    
1466 schuur        1.5        cls->addProperty(*cp);
1467                       }
1468                    }
1469                    
1470                    
1471                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
1472 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1473                    {
1474                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1475 schuur        1.5  
1476                       for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
1477 mark.hamzy    1.20       CIMQualifier *cq   = new CIMQualifier(cls->getQualifier(i));
1478                          jint          jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq);
1479                          jobject       qual = jEnv->NewObject(classRefs[26],instanceMethodIDs[37],jCq);
1480                    
1481 schuur        1.5        jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],qual);
1482                       }
1483 mark.hamzy    1.20 
1484 schuur        1.5     return jVec;
1485                    }
1486                    
1487 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
1488 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1489                    {
1490                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1491                       CIMClass   *cls = new CIMClass(CIMName(str), CIMName());
1492                    
1493 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1494 mark.hamzy    1.20 
1495                       return DEBUG_ConvertCToJava (CIMClass*, jint, cls);
1496 schuur        1.1  }
1497                    
1498                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
1499 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls)
1500                    {
1501                       CIMClass     *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1502                       const String &cn  = cls->getSuperClassName().getString();
1503                    
1504 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1505 mark.hamzy    1.20 
1506 schuur        1.1     return str;
1507                    }
1508                    
1509                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
1510 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1511                    {
1512                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1513                    
1514 schuur        1.1     if (cls->hasKeys()) {
1515                          Array<CIMName> keyNames;
1516                          cls->getKeyNames(keyNames);
1517                          for(int i=0, s=keyNames.size();i<s;i++){
1518                             Uint32 pos=cls->findProperty(keyNames[i]);
1519                             if (pos!=PEG_NOT_FOUND){
1520 mark.hamzy    1.20             CIMProperty *cp  = new CIMProperty(cls->getProperty(pos));
1521                                jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1522                    
1523                                jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);
1524                    
1525 schuur        1.1              jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1526                             }
1527                          }
1528                       }
1529 mark.hamzy    1.20 
1530 schuur        1.1     return jVec;
1531                    }
1532                    
1533                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
1534 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1535                    {
1536                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1537                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1538                       jint        rv  = -1;
1539                       Uint32      pos = cls->findMethod(String(str));
1540                    
1541 schuur        1.1     if (pos!=PEG_NOT_FOUND) {
1542 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMMethod*, jint, new CIMMethod(cls->getMethod(pos)));
1543 schuur        1.1     }
1544 mark.hamzy    1.20 
1545 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1546 mark.hamzy    1.20 
1547 schuur        1.1     return rv;
1548                    }
1549                    
1550                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
1551 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared)
1552                    {
1553                       CIMClass *cls             = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1554                       CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC (jint, CIMClass*, jClsToBeCompared);
1555                    
1556 schuur        1.1     return cls->identical(*clsToBeCompared);
1557                    }
1558                    
1559                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
1560 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls)
1561                    {
1562                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1563                    
1564 schuur        1.1     delete cls;
1565 mark.hamzy    1.20 
1566                       DEBUG_ConvertCleanup (jint, jCls);
1567 schuur        1.1  }
1568                    
1569 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
1570 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
1571                    {
1572                       CIMClass *cc   = DEBUG_ConvertJavaToC (jint, CIMClass*, jInst);
1573 mark.hamzy    1.22    CIMClass *cf   = 0;
1574 mark.hamzy    1.20    CIMName   clsn = cc->getClassName();
1575 schuur        1.7  
1576                       if (lo) {
1577 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1578                    
1579 schuur        1.7        CIMName clsn=cc->getClassName();
1580 mark.hamzy    1.23 
1581 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--)
1582                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1583 mark.hamzy    1.23 
1584 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1585 schuur        1.7     }
1586                       else if (jPl) {
1587 mark.hamzy    1.23       CIMPropertyList pl = getList(jEnv,jPl);
1588                          Array<CIMName>  n  = pl.getPropertyNameArray();
1589                    
1590                          cf = new CIMClass(clsn, cc->getSuperClassName());
1591                    
1592                          for (int i = 0,s = n.size(); i < s; i++) {
1593 schuur        1.7           Uint32 pos=cc->findProperty(n[i]);
1594 mark.hamzy    1.23 
1595 schuur        1.7           if (pos!=PEG_NOT_FOUND) {
1596                                if (iq) {
1597 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos).clone();
1598                    
1599                                   if (!ic)
1600                                      cp.setClassOrigin(CIMName());
1601                    
1602 schuur        1.7                 cf->addProperty(cp);
1603                                }
1604                                else {
1605 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos);
1606                                   CIMName     co;
1607                    
1608                                   if (ic)
1609                                      co = cp.getClassOrigin();
1610                    
1611                                   CIMProperty np(cp.getName(),
1612                                                  cp.getValue(),
1613                                                  cp.getArraySize(),
1614                                                  cp.getReferenceClassName(),
1615                                                  co,
1616                                                  cp.getPropagated());
1617                    
1618 schuur        1.7                 cf->addProperty(np);
1619                                }
1620                             }
1621                          }
1622 mark.hamzy    1.23       if (iq)
1623                             for (Uint32 i = 0, s = cc->getQualifierCount(); i < s; i++)
1624                                cf->addQualifier(cc->getQualifier(i));
1625 schuur        1.7     }
1626                       else if (iq) {
1627 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1628                    
1629                          if (ic)
1630                             return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1631                    
1632                          for (int i = cf->getPropertyCount()-1; i >= 0; i--) {
1633 schuur        1.7           CIMProperty cp=cf->getProperty(i);
1634 mark.hamzy    1.23 
1635 schuur        1.7           cp.setClassOrigin(CIMName());
1636                             cf->removeProperty(i);
1637                             cf->addProperty(cp);
1638                          }
1639                       }
1640                       else {
1641 mark.hamzy    1.23       cf = new CIMClass(clsn, cc->getSuperClassName());
1642                    
1643                          for (int i = cc->getPropertyCount()-1; i >= 0; i--) {
1644                             CIMProperty cp = cc->getProperty(i);
1645                             CIMName     co;
1646                    
1647                             if (ic)
1648                                co = cp.getClassOrigin();
1649                    
1650                             CIMProperty np(cp.getName(),
1651                                            cp.getValue(),
1652                                            cp.getArraySize(),
1653                                            cp.getReferenceClassName(),
1654                                            co,
1655                                            cp.getPropagated());
1656                    
1657 schuur        1.7           cf->addProperty(np);
1658                          }
1659                       }
1660                    
1661 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1662 schuur        1.7  }
1663                    
1664 schuur        1.1  
1665                    
1666                    // -------------------------------------
1667                    // ---
1668                    // -		CIMInstance
1669                    // ---
1670                    
1671                    // -------------------------------------
1672                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
1673 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
1674                    {
1675                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance());
1676 schuur        1.1  }
1677                    
1678                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
1679 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1680                    {
1681 schuur        1.1     const char *str=jEnv->GetStringUTFChars(jN,NULL);
1682 mark.hamzy    1.20 
1683                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(CIMName(str)));
1684 schuur        1.1  }
1685                    
1686                    //Added by Andy Viciu
1687                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
1688 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1689                    {
1690                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1691                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1692                    
1693 schuur        1.1     /* NOT SUPPORTED AND NOT NEEDED*/
1694                    }
1695                    
1696                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
1697 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV)
1698                    {
1699                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1700                       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
1701                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1702                       Uint32       pos = ci->findProperty(CIMName(str));
1703                    
1704 schuur        1.5     try {
1705 schuur        1.6        if (pos!=PEG_NOT_FOUND) {
1706                             CIMProperty cp=ci->getProperty(pos);
1707                             if (cp.getType()==cv->getType())
1708                                cp.setValue(*cv);
1709                             else {
1710 mark.hamzy    1.16             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");
1711                                DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));
1712                    
1713 schuur        1.6              throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
1714                             }
1715                             ci->removeProperty(pos);
1716                             ci->addProperty(cp);
1717                          }
1718                          else {
1719                             CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
1720                             ci->addProperty(*cp);
1721 schuur        1.1        }
1722                       }
1723 schuur        1.5     Catch(jEnv);
1724 schuur        1.1  
1725                       jEnv->ReleaseStringUTFChars(jN,str);
1726                    }
1727                    
1728 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
1729 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV)
1730                    {
1731                       throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported"));
1732 schuur        1.5  }
1733                    
1734 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
1735 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1736                    {
1737                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1738                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1739                       jint         rv  = -1;
1740                    
1741 schuur        1.1     try {
1742 mark.hamzy    1.23       Uint32 pos = ci->findProperty(CIMName(str));
1743                    
1744                          if (pos != PEG_NOT_FOUND) {
1745                             CIMProperty *cp = new CIMProperty(ci->getProperty(pos));
1746                    
1747 mark.hamzy    1.20          rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1748 schuur        1.1        }
1749                       }
1750                       Catch(jEnv);
1751 mark.hamzy    1.20 
1752 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1753 mark.hamzy    1.20 
1754 schuur        1.1     return rv;
1755                    }
1756                    
1757                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
1758 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1759                    {
1760                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1761 schuur        1.5  
1762 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1763                          if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
1764 mark.hamzy    1.20          CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1765                             jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1766                    
1767                             jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);
1768                    
1769 schuur        1.1           jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1770                          }
1771                       }
1772                    
1773                       return jVec;
1774                    }
1775                    
1776                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
1777 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1778                    {
1779                       CIMInstance  *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1780                       const String &cn = ci->getClassName().getString();
1781                    
1782 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1783 mark.hamzy    1.20 
1784 schuur        1.1     return str;
1785                    }
1786                    
1787                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
1788 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1789                    {
1790                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1791                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1792                       jint         rv  = -1;
1793                       Uint32       pos = ci->findQualifier(String(str));
1794                    
1795 schuur        1.1     if (pos!=PEG_NOT_FOUND) {
1796 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos)));
1797 schuur        1.1     }
1798 mark.hamzy    1.20 
1799 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1800 mark.hamzy    1.20 
1801 schuur        1.1     return rv;
1802                    }
1803                    
1804                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
1805 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1806                    {
1807                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1808                       CIMInstance *cl = new CIMInstance(ci->clone());
1809                    
1810                       return DEBUG_ConvertCToJava (CIMInstance*, jint, cl);
1811 schuur        1.1  }
1812                    
1813                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
1814 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1815                    {
1816                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1817 mark.hamzy    1.16 
1818 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1819 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1820                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1821 mark.hamzy    1.16 
1822 mark.hamzy    1.20       jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);
1823 mark.hamzy    1.16 
1824 schuur        1.1        jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1825                       }
1826 mark.hamzy    1.16 
1827 schuur        1.1     return jVec;
1828                    }
1829                    
1830                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
1831 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1832                    {
1833                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1834                    
1835 schuur        1.1     delete ci;
1836 mark.hamzy    1.20 
1837                       DEBUG_ConvertCleanup (jint, jInst);
1838 schuur        1.1  }
1839                    
1840 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties
1841 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
1842                    {
1843                       CIMInstance *ci   = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1844 mark.hamzy    1.22    CIMInstance *cf   = 0;
1845 mark.hamzy    1.20    CIMName      clsn = ci->getClassName();
1846 schuur        1.7  
1847                       if (lo) {
1848                          cf=new CIMInstance(ci->clone());
1849                          CIMName clsn=ci->getClassName();
1850                          for (int i=cf->getPropertyCount()-1; i>=0; i--)
1851                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1852 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
1853 schuur        1.7     }
1854                       else if (jPl) {
1855                          CIMPropertyList pl=getList(jEnv,jPl);
1856                          Array<CIMName> n=pl.getPropertyNameArray();
1857                          cf=new CIMInstance(clsn);
1858                          for (int i=0,s=n.size(); i<s; i++) {
1859                             Uint32 pos=ci->findProperty(n[i]);
1860                             if (pos!=PEG_NOT_FOUND) {
1861                                if (iq) {
1862                                   CIMProperty cp=ci->getProperty(pos).clone();
1863                                   if (!ic) cp.setClassOrigin(CIMName());
1864                                   cf->addProperty(cp);
1865                                }
1866                                else {
1867                                   CIMProperty cp=ci->getProperty(pos);
1868                                   CIMName co;
1869                                   if (ic) co=cp.getClassOrigin();
1870                                   CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1871                                                  cp.getReferenceClassName(),co,cp.getPropagated());
1872                                   cf->addProperty(np);
1873                                }
1874 schuur        1.7           }
1875                          }
1876                          cf->setPath(ci->getPath());
1877                       }
1878                       else if (iq) {
1879                          cf=new CIMInstance(ci->clone());
1880 mark.hamzy    1.20       if (ic) return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
1881 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--) {
1882                             CIMProperty cp=cf->getProperty(i);
1883                             cp.setClassOrigin(CIMName());
1884                             cf->removeProperty(i);
1885                             cf->addProperty(cp);
1886                          }
1887                       }
1888                       else {
1889                          cf=new CIMInstance(clsn);
1890                          for (int i=ci->getPropertyCount()-1; i>=0; i--) {
1891                             CIMProperty cp=ci->getProperty(i);
1892                             CIMName co;
1893                             if (ic) co=cp.getClassOrigin();
1894                             CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1895                                            cp.getReferenceClassName(),co,cp.getPropagated());
1896                             cf->addProperty(np);
1897                          }
1898                          cf->setPath(ci->getPath());
1899                       }
1900                    
1901 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
1902 schuur        1.7  }
1903 schuur        1.1  
1904                    // -------------------------------------
1905                    // ---
1906                    // -		CIMObjectPath
1907                    // ---
1908                    // -------------------------------------
1909                    
1910 mark.hamzy    1.20 CIMObjectPath* construct()
1911                    {
1912                       CIMObjectPath *cop = new CIMObjectPath();
1913                       _nameSpace     n;
1914                    
1915 schuur        1.1     cop->setNameSpace(n.nameSpace());
1916                       cop->setHost(n.hostName());
1917 mark.hamzy    1.20 
1918 schuur        1.1     return cop;
1919                    }
1920                    
1921                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
1922 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
1923                    {
1924                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, construct());
1925 schuur        1.1  }
1926                    
1927                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
1928 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn)
1929                    {
1930                       CIMObjectPath *cop = construct();
1931                       const char    *str = jEnv->GetStringUTFChars(jCn,NULL);
1932                    
1933                       if (str)
1934                          cop->setClassName(str);
1935 schuur        1.1     jEnv->ReleaseStringUTFChars(jCn,str);
1936 mark.hamzy    1.20 
1937                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
1938 schuur        1.1  }
1939                    
1940                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
1941 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs)
1942                    {
1943                       CIMObjectPath *cop  = construct();
1944                       const char    *str1 = NULL;
1945                       const char    *str2 = NULL;
1946 schuur        1.1  
1947                       try {
1948 schuur        1.6        if (jCn) str1=jEnv->GetStringUTFChars(jCn,NULL);
1949                          if (jNs) str2=jEnv->GetStringUTFChars(jNs,NULL);
1950 schuur        1.1        if (str1) cop->setClassName(str1);
1951                          if (str2) cop->setNameSpace(str2);
1952                       }
1953 schuur        1.5     Catch(jEnv);
1954 schuur        1.1  
1955 schuur        1.6     if (str1) jEnv->ReleaseStringUTFChars(jCn,str1);
1956                       if (str2) jEnv->ReleaseStringUTFChars(jNs,str2);
1957 mark.hamzy    1.20 
1958                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
1959 schuur        1.1  }
1960                    
1961                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
1962 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1963                    {
1964                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1965                       CIMObjectPath *cop = new CIMObjectPath(ci->getPath());
1966                       _nameSpace     n;
1967                    
1968 schuur        1.1     if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
1969                       if (cop->getHost()==NULL) cop->setHost(n.hostName());
1970 mark.hamzy    1.20 
1971                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
1972 schuur        1.1  }
1973                    
1974                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
1975 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
1976                    {
1977                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1978                    
1979 schuur        1.1     delete cop;
1980 mark.hamzy    1.20 
1981                       DEBUG_ConvertCleanup (jint, jCop);
1982 schuur        1.1  }
1983                    
1984                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
1985 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
1986                    {
1987                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1988                       const String  &hn = cop->getHost();
1989                    
1990 schuur        1.1     jstring str=jEnv->NewStringUTF(hn.getCString());
1991 mark.hamzy    1.20 
1992 schuur        1.1     return str;
1993                    }
1994                    
1995                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
1996 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
1997                    {
1998                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1999                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2000                    
2001 schuur        1.1     cop->setHost(String(str));
2002                       jEnv->ReleaseStringUTFChars(jName,str);
2003                    }
2004                    
2005                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
2006 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2007                    {
2008                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2009                       const String  &cn  = cop->getClassName().getString();
2010                    
2011 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
2012 mark.hamzy    1.20 
2013 schuur        1.1     return str;
2014                    }
2015                    
2016                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
2017 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2018                    {
2019                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2020                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2021                    
2022 schuur        1.1     cop->setClassName(String(str));
2023                       jEnv->ReleaseStringUTFChars(jName,str);
2024                    }
2025                    
2026                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
2027 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2028                    {
2029                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2030                       const String  &ns  = cop->getNameSpace().getString();
2031                    
2032 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2033 mark.hamzy    1.20 
2034 schuur        1.1     return str;
2035                    }
2036                    
2037                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
2038 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2039                    {
2040                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2041                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2042                    
2043 schuur        1.1     cop->setNameSpace(CIMNamespaceName(str));
2044                       jEnv->ReleaseStringUTFChars(jName,str);
2045                    }
2046                    
2047                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
2048 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jId, jint jVal)
2049                    {
2050                       CIMObjectPath       *cop         = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2051                       const char          *str         = jEnv->GetStringUTFChars(jId,NULL);
2052                       CIMValue            *cv          = DEBUG_ConvertJavaToC (jint, CIMValue*, jVal);
2053                       Array<CIMKeyBinding> keyBindings = cop->getKeyBindings();
2054                    
2055 schuur        1.1     keyBindings.append(CIMKeyBinding(str,*cv));
2056                       cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
2057                       jEnv->ReleaseStringUTFChars(jId,str);
2058                    }
2059                    
2060                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
2061 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2062                    {
2063                       CIMObjectPath              *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2064                       const Array<CIMKeyBinding> &akb = cop->getKeyBindings();
2065 schuur        1.1  
2066                       for (Uint32 i=0,s=akb.size(); i<s; i++) {
2067                          const String &n=akb[i].getName().getString();
2068                          const String &v=akb[i].getValue();
2069                          CIMKeyBinding::Type t=akb[i].getType();
2070 mark.hamzy    1.20       CIMValue *cv = 0;
2071 schuur        1.1        switch (t) {
2072                          case CIMKeyBinding::NUMERIC:
2073                             cv=new CIMValue((Sint32)atol(v.getCString()));
2074                             break;
2075                          case CIMKeyBinding::STRING:
2076                             cv=new CIMValue(v);
2077                             break;
2078                          case CIMKeyBinding::BOOLEAN:
2079                             cv=new CIMValue((Boolean)(v.getCString()));
2080                             break;
2081                          case CIMKeyBinding::REFERENCE:
2082                             cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
2083                             break;
2084                          default:
2085                             throwCIMException(jEnv,"+++ unsupported type: ");
2086                          }
2087 r.kieninger   1.11 
2088 mark.hamzy    1.20       CIMProperty *cp = 0;
2089                          if (t!=CIMKeyBinding::REFERENCE)
2090 schuur        1.1           cp=new CIMProperty(n,*cv);
2091 mark.hamzy    1.20       else
2092                             cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
2093                    
2094                          jint    jCp  = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2095                          jobject prop = jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jCp);
2096 schuur        1.1  
2097                          jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
2098                       }
2099 mark.hamzy    1.20 
2100 schuur        1.1     return jVec;
2101                    }
2102                    
2103                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
2104 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jStr)
2105                    {
2106                       CIMObjectPath              *cop        = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2107                       const Array<CIMKeyBinding> &akb        = cop->getKeyBindings();
2108                       const char                 *strKeyName = jEnv->GetStringUTFChars(jStr,NULL);
2109                       jstring                     retStr     = NULL;
2110                    
2111 schuur        1.1     for (Uint32 i=0,s=akb.size(); i<s; i++) {
2112                          const String &n=akb[i].getName().getString();
2113                          if (n==String(strKeyName)) {
2114                             retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
2115                             break;
2116                          }
2117                       }
2118 mark.hamzy    1.20 
2119 schuur        1.1     jEnv->ReleaseStringUTFChars(jStr,strKeyName);
2120 mark.hamzy    1.20 
2121 schuur        1.1     return retStr;
2122                    }
2123                    
2124                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
2125 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jStr)
2126                    {
2127                       const char    *strCop = jEnv->GetStringUTFChars(jStr,NULL);
2128                       CIMObjectPath *cop    = new CIMObjectPath();
2129                    
2130 schuur        1.1     cop->set(String(strCop));
2131                       jEnv->ReleaseStringUTFChars(jStr,strCop);
2132 mark.hamzy    1.20 
2133                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2134 schuur        1.1  }
2135                    
2136                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
2137 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2138                    {
2139                       CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2140                       Array<CIMKeyBinding>  akb;
2141                    
2142 schuur        1.6     for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {
2143                          jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));
2144 mark.hamzy    1.20 
2145                          jint         jCp = jEnv->CallIntMethod(o,instanceMethodIDs[29]);
2146                          CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp);
2147                    
2148 schuur        1.1        akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
2149                       }
2150                       cop->setKeyBindings(akb);
2151                    }
2152                    
2153                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
2154 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2155                    {
2156                       CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2157                       CIMObjectPath *copl = new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
2158                    
2159                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, copl);
2160 schuur        1.1  }
2161                    
2162                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
2163 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2164                    {
2165                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2166                       const String  &ns  = cop->toString();
2167                    
2168 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2169 mark.hamzy    1.20 
2170 schuur        1.1     return str;
2171                    }
2172                    
2173                    // -------------------------------------
2174                    // ---
2175                    // -		CIMDataType
2176                    // ---
2177                    // -------------------------------------
2178                    
2179                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
2180 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type)
2181                    {
2182                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type));
2183 schuur        1.1  }
2184                    
2185                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
2186 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jint size)
2187                    {
2188                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,size));
2189 schuur        1.1  }
2190                    
2191                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
2192 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)
2193                    {
2194                       const char *ref   = jEnv->GetStringUTFChars(jRef,NULL);
2195                       jint        cInst = DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,String(ref)));
2196                    
2197 schuur        1.1     jEnv->ReleaseStringUTFChars(jRef,ref);
2198 mark.hamzy    1.20 
2199 schuur        1.1     return cInst;
2200                    }
2201                    
2202                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
2203 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2204                    {
2205                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2206                    
2207 schuur        1.1     return dt->_array==true;
2208                    }
2209                    
2210                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
2211 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2212                    {
2213                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2214                    
2215 schuur        1.1     return dt->_reference==true;
2216                    }
2217                    
2218                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
2219 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2220                    {
2221                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2222                    
2223 schuur        1.1     return dt->_reference==true;
2224                    }
2225                    
2226                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
2227 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2228                    {
2229                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2230                    
2231 schuur        1.1     return dt->_type;
2232                    }
2233                    
2234                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
2235 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2236                    {
2237                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2238                    
2239 schuur        1.1     return dt->_size;
2240                    }
2241                    
2242                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
2243 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2244                    {
2245                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2246                       jstring    str = jEnv->NewStringUTF(dt->_refClass.getCString());
2247                    
2248 schuur        1.1     return str;
2249                    }
2250                    
2251                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
2252 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2253                    {
2254                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2255                       jstring    str = NULL;
2256                    
2257 schuur        1.1     if (dt->_type & 0x10) {
2258                          char tmp[32];
2259                          strcpy(tmp,jTypeToChars[dt->_type-0x10]);
2260                          strcat(tmp,"[]");
2261                          str=jEnv->NewStringUTF(tmp);
2262 schuur        1.5     }
2263 schuur        1.1     else if (dt->_type & 0x20) {
2264                          String tmp=dt->_refClass+" REF";
2265                          str=jEnv->NewStringUTF(tmp.getCString());
2266 schuur        1.6     }
2267 schuur        1.1     else {
2268                          str=jEnv->NewStringUTF(jTypeToChars[dt->_type]);
2269                       }
2270 mark.hamzy    1.20 
2271 schuur        1.1     return str;
2272                    }
2273                    
2274 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDataType__1finalize
2275                          (JNIEnv *jEnv, jobject jThs, jint jDt)
2276                    {
2277                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2278                    
2279                       delete dt;
2280                    
2281                       DEBUG_ConvertCleanup (jint, jDt);
2282                    }
2283                    
2284                    CIMType toPtype (int jType)
2285                    {
2286                      if (jType > 13)
2287                         return (CIMType)14;
2288                      return
2289                         (CIMType)(jTypeToPType[jType]);
2290 schuur        1.5  }
2291 schuur        1.1  
2292                    
2293                    // -------------------------------------
2294                    // ---
2295 schuur        1.6  // -		CIMArgument
2296                    // ---
2297                    // -------------------------------------
2298                    
2299                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue
2300 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2301                    {
2302                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2303                       CIMValue      *cv = new CIMValue(cp->getValue());
2304                    
2305                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2306 schuur        1.6  }
2307                    
2308                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1new
2309 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2310                    {
2311                       CIMParamValue *p = new CIMParamValue(String::EMPTY,CIMValue());
2312                    
2313                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2314 schuur        1.6  }
2315                    
2316                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS
2317 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
2318                    {
2319                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2320                       CIMParamValue *p   = new CIMParamValue(str,CIMValue());
2321                    
2322 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2323 mark.hamzy    1.20 
2324                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2325 schuur        1.6  }
2326                    
2327                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV
2328 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2329                    {
2330                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2331                       CIMValue      *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2332                       CIMParamValue *p   = new CIMParamValue(str,cv);
2333                    
2334 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2335 mark.hamzy    1.20 
2336                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2337 schuur        1.6  }
2338                    
2339                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue
2340 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2341                    {
2342                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2343                       CIMValue      *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2344                    
2345 schuur        1.6     cp->setValue(*cv);
2346                    }
2347                    
2348                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName
2349 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2350                    {
2351                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2352                       const String  &n   = cp->getParameterName();
2353                       jstring        str = jEnv->NewStringUTF(n.getCString());
2354                    
2355 schuur        1.6     return str;
2356                    }
2357                    
2358                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName
2359 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2360                    {
2361                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2362                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2363                       String         n(str);
2364                    
2365 schuur        1.6     cp->setParameterName(n);
2366                       jEnv->ReleaseStringUTFChars(jN,str);
2367                    }
2368                    
2369                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType
2370 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2371                    {
2372                       CIMParamValue *cp   = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2373                       const CIMValue cv   = cp->getValue();
2374                       String         ref;
2375                       _dataType     *type = new _dataType(pTypeToJType[cv.getType()],
2376                                                           cv.getArraySize(),
2377                                                           false,
2378                                                           false,
2379                                                           cv.isArray(),
2380                                                           ref,
2381                                                           true);
2382                    
2383                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2384 schuur        1.6  }
2385                    
2386                    // -------------------------------------
2387                    // ---
2388 schuur        1.1  // -		CIMProperty
2389                    // ---
2390                    // -------------------------------------
2391                    
2392                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
2393 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2394                    {
2395                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2396                       CIMValue    *cv = new CIMValue(cp->getValue());
2397                    
2398                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2399 schuur        1.1  }
2400                    
2401 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
2402 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2403                    {
2404                       CIMProperty *p = new CIMProperty(CIMName(),CIMValue());
2405                    
2406                       return DEBUG_ConvertCToJava (CIMProperty*, jint, p);
2407 schuur        1.5  }
2408                    
2409 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
2410 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2411                    {
2412 schuur        1.1     try {
2413 mark.hamzy    1.20       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2414                          const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2415                          CIMProperty *cp  = 0;
2416 schuur        1.1  
2417                          if (cv->getType()!=CIMTYPE_REFERENCE)
2418                             cp=new CIMProperty(String(str),*cv);
2419                          else {
2420                             if (!cv->isArray()) {
2421                                CIMObjectPath cop;
2422                                cv->get(cop);
2423                                cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
2424                             }
2425                             else {
2426                                throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
2427                             }
2428                          }
2429                    
2430                          jEnv->ReleaseStringUTFChars(jN,str);
2431 mark.hamzy    1.20 
2432                          return DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2433 schuur        1.1     }
2434                       Catch(jEnv);
2435 mark.hamzy    1.20 
2436 schuur        1.1     return -1;
2437                    }
2438                    
2439                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
2440 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2441                    {
2442                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2443                       CIMValue    *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2444                    
2445 schuur        1.1     cp->setValue(*cv);
2446                    }
2447                    
2448                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
2449 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2450                    {
2451                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2452                    
2453 schuur        1.1     return (jboolean)cp->isArray();
2454                    }
2455                    
2456                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
2457 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jV)
2458                    {
2459                       CIMProperty *cp   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2460                       CIMValue    *cvin = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2461                       CIMValue     cv   = cp->getValue();
2462                    
2463 schuur        1.1     if (cvin->isNull())
2464                          throwCIMException(jEnv,"+++ null cvin value ");
2465                       if (!cv.isArray())
2466                          throwCIMException(jEnv,"+++ not an array ");
2467                       if (cvin->getType()!=cv.getType())
2468                          throwCIMException(jEnv,"+++ type mismatch ");
2469 mark.hamzy    1.20 
2470 schuur        1.1     CIMType type=cv.getType();
2471 mark.hamzy    1.20 
2472 schuur        1.1     switch (type) {
2473                       case CIMTYPE_BOOLEAN: {
2474                             Boolean bo;
2475                             cvin->get(bo);
2476                             Array<Boolean> boarr;
2477                             cv.get(boarr);
2478                             boarr.append(bo);
2479                          }
2480                          break;
2481                       case CIMTYPE_UINT8: {
2482                             Uint8 u8;
2483                             cvin->get(u8);
2484                             Array<Uint8> u8arr;
2485                             cv.get(u8arr);
2486                             u8arr.append(u8);
2487                          }
2488                          break;
2489                       case CIMTYPE_SINT8: {
2490                             Sint8 s8;
2491                             cvin->get(s8);
2492                             Array<Sint8> s8arr;
2493 schuur        1.1           cv.get(s8arr);
2494                             s8arr.append(s8);
2495                          }
2496                          break;
2497                       case CIMTYPE_UINT16: {
2498                             Uint16 u16;
2499                             cvin->get(u16);
2500                             Array<Uint16> u16arr;
2501                             cv.get(u16arr);
2502                             u16arr.append(u16);
2503                          }
2504                          break;
2505                       case CIMTYPE_SINT16: {
2506                             Sint16 s16;
2507                             cvin->get(s16);
2508                             Array<Sint16> s16arr;
2509                             cv.get(s16arr);
2510                             s16arr.append(s16);
2511                          }
2512                          break;
2513                       case CIMTYPE_UINT32: {
2514 schuur        1.1           Uint32 u32;
2515                             cvin->get(u32);
2516                             Array<Uint32> u32arr;
2517                             cv.get(u32arr);
2518                             u32arr.append(u32);
2519                          }
2520                          break;
2521                       case CIMTYPE_SINT32: {
2522                             Sint32 s32;
2523                             cvin->get(s32);
2524                             Array<Sint32> s32arr;
2525                             cv.get(s32arr);
2526                             s32arr.append(s32);
2527                          }
2528                          break;
2529                       case CIMTYPE_UINT64: {
2530                             Uint64 u64;
2531                             cvin->get(u64);
2532                             Array<Uint64> u64arr;
2533                             cv.get(u64arr);
2534                             u64arr.append(u64);
2535 schuur        1.1        }
2536                          break;
2537                       case CIMTYPE_SINT64: {
2538                             Sint64 s64;
2539                             cvin->get(s64);
2540                             Array<Sint64> s64arr;
2541                             cv.get(s64arr);
2542                             s64arr.append(s64);
2543                          }
2544                          break;
2545                       case CIMTYPE_REAL32: {
2546                             Real32 f;
2547                             cvin->get(f);
2548                             Array<Real32> farr;
2549                             cv.get(farr);
2550                             farr.append(f);
2551                          }
2552                          break;
2553                       case CIMTYPE_REAL64: {
2554                             Real64 d;
2555                             cvin->get(d);
2556 schuur        1.1           Array<Real64> darr;
2557                             cv.get(darr);
2558                             darr.append(d);
2559                          }
2560                          break;
2561                       case CIMTYPE_STRING: {
2562                             String str;
2563                             cvin->get(str);
2564                             Array<String> strarr;
2565                             cv.get(strarr);
2566                             strarr.append(str);
2567                          }
2568                          break;
2569                       case CIMTYPE_REFERENCE: {
2570                             CIMObjectPath ref;
2571                             cvin->get(ref);
2572                             Array<CIMObjectPath> refarr;
2573                             cv.get(refarr);
2574                             refarr.append(ref);
2575                          }
2576                          break;
2577 dave.sudlik   1.13    case CIMTYPE_OBJECT: {
2578                             CIMObject obj;
2579                             cvin->get(obj);
2580                             Array<CIMObject> objarr;
2581                             cv.get(objarr);
2582                             objarr.append(obj);
2583                          }
2584                          break;
2585 schuur        1.1     default:
2586                          throwCIMException(jEnv,"+++ unsupported type ");
2587                       }
2588                    }
2589                    
2590 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
2591 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ)
2592                    {
2593                       CIMProperty  *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2594                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2595                    
2596 schuur        1.5     cp->addQualifier(*cq);
2597                    }
2598                    
2599 schuur        1.1  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
2600 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2601                    {
2602                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2603                       const String &n   = cp->getName().getString();
2604                       jstring       str = jEnv->NewStringUTF(n.getCString());
2605                    
2606 schuur        1.1     return str;
2607                    }
2608                    
2609 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
2610 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2611                    {
2612                       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2613                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2614                    
2615 schuur        1.5     cp->setName(CIMName(str));
2616                       jEnv->ReleaseStringUTFChars(jN,str);
2617                    }
2618                    
2619 schuur        1.1  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
2620 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2621                    {
2622                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2623                    
2624 schuur        1.1     return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
2625                    }
2626                    
2627                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
2628 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jP)
2629                    {
2630                       CIMProperty   *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2631                       const String  &n  = cp->getReferenceClassName().getString();
2632                    
2633 schuur        1.1     jstring str=jEnv->NewStringUTF(n.getCString());
2634 mark.hamzy    1.20 
2635 schuur        1.1     return str;
2636                    }
2637                    
2638                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
2639 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2640                    {
2641                       CIMProperty  *cp   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2642                       String        ref  = cp->getReferenceClassName().getString();
2643                       _dataType    *type = new _dataType(pTypeToJType[cp->getType()],
2644                                                          cp->getArraySize(),
2645                                                          ref.size() ? true : false,
2646                                                          false,
2647                                                          cp->isArray(),
2648                                                          ref,
2649                                                          true);
2650                    
2651                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2652 schuur        1.1  }
2653                    
2654 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
2655 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt)
2656                    {
2657                       CIMProperty  *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2658                       _dataType    *dt = (_dataType*)jDt;
2659                       CIMValue      val;
2660                    
2661 schuur        1.5     val.setNullValue(toPtype(dt->_type),dt->_array);
2662 mark.hamzy    1.20 
2663                       CIMProperty *np = new CIMProperty(cp->getName(),val);
2664                    
2665 schuur        1.5     delete cp;
2666 mark.hamzy    1.20 
2667                       return DEBUG_ConvertCToJava (CIMProperty*, jint, np);
2668 schuur        1.5  }
2669                    
2670 schuur        1.1  JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
2671 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2672                    {
2673                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2674                       const String &n   = cp->getName().getString();
2675                       jstring       str = jEnv->NewStringUTF(n.getCString());
2676                    
2677 schuur        1.1     return str;
2678                    }
2679                    
2680                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
2681 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2682                    {
2683                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2684                    
2685 schuur        1.1     delete cp;
2686 mark.hamzy    1.20 
2687                       DEBUG_ConvertCleanup (jint, jP);
2688 schuur        1.1  }
2689 schuur        1.5  
2690                    // -------------------------------------
2691                    // ---
2692                    // -     CIMQualifierType
2693                    // ---
2694                    // -------------------------------------
2695                    
2696                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
2697 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2698                    {
2699 schuur        1.5     CIMQualifierDecl *qual = new CIMQualifierDecl();
2700 mark.hamzy    1.20 
2701                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, qual);
2702 schuur        1.5  }
2703                    
2704                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
2705 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
2706                    {
2707                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
2708                    
2709 schuur        1.5     delete qt;
2710 mark.hamzy    1.20 
2711                       DEBUG_ConvertCleanup (jint, jQ);
2712 schuur        1.5  }
2713                    
2714                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
2715 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
2716                    {
2717                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
2718                       const String     &n   = qt->getName().getString();
2719                       jstring           str = jEnv->NewStringUTF(n.getCString());
2720                    
2721 schuur        1.5     return str;
2722                    }
2723                    
2724 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
2725 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN)
2726                    {
2727 mark.hamzy    1.24    CIMQualifierDecl *qt   = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
2728                       const char       *str  = jEnv->GetStringUTFChars(jN,NULL);
2729                       jint              jret = 0;
2730 mark.hamzy    1.20 
2731 schuur        1.6     if (qt->isUninitialized())
2732 mark.hamzy    1.24    {
2733                          CIMQualifierDecl *nqt = new CIMQualifierDecl(CIMName(str),CIMValue(),CIMScope());
2734                    
2735                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
2736                       }
2737 mark.hamzy    1.20    else
2738 mark.hamzy    1.24    {
2739 mark.hamzy    1.20       qt->setName(CIMName(str));
2740 mark.hamzy    1.24 
2741                          CIMQualifierDecl *nqt = new CIMQualifierDecl(*qt);
2742                    
2743                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
2744                       }
2745                    
2746 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
2747 mark.hamzy    1.20 
2748 mark.hamzy    1.24    return jret;
2749 schuur        1.5  }
2750                    
2751                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
2752 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
2753                    {
2754                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
2755                       CIMValue         *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2756                    
2757 schuur        1.5     qt->setValue(*cv);
2758                    }
2759                    
2760 schuur        1.1  // -------------------------------------
2761                    // ---
2762                    // -     CIMQualifier
2763                    // ---
2764                    // -------------------------------------
2765                    
2766 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
2767 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
2768                    {
2769                       const char   *str  = jEnv->GetStringUTFChars(jN,NULL);
2770 schuur        1.5     CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue());
2771 mark.hamzy    1.20 
2772 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
2773 mark.hamzy    1.20 
2774                       return DEBUG_ConvertCToJava (CIMQualifier*, jint, qual);
2775 schuur        1.5  }
2776                    
2777 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
2778 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
2779                    {
2780                       CIMQualifier *cq=DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2781                    
2782 schuur        1.1     delete cq;
2783 mark.hamzy    1.20 
2784                       DEBUG_ConvertCleanup (jint, jQ);
2785 schuur        1.1  }
2786                    
2787 schuur        1.5  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
2788 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
2789                    {
2790                       CIMQualifier *cq  = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2791                       const String &n   = cq->getName().getString();
2792                       jstring       str = jEnv->NewStringUTF(n.getCString());
2793                    
2794 schuur        1.5     return str;
2795                    }
2796                    
2797                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
2798 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
2799                    {
2800                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2801                       CIMValue     *cv = new CIMValue(cq->getValue());
2802                    
2803                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2804 schuur        1.5  }
2805                    
2806                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
2807 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
2808                    {
2809                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2810                       CIMValue     *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2811                    
2812 schuur        1.5     cq->setValue(*cv);
2813                    }
2814                    
2815 schuur        1.1  // -------------------------------------
2816                    // ---
2817                    // -		CIMDateTime
2818                    // ---
2819                    // -------------------------------------
2820                    
2821                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
2822 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
2823                    {
2824                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2825                       CIMDateTime *dt  = 0;
2826                    
2827 schuur        1.1     if (strlen(str)==0)
2828                          dt=new CIMDateTime();
2829                       else
2830                          dt=new CIMDateTime(String(str));
2831                       jEnv->ReleaseStringUTFChars(jN,str);
2832 mark.hamzy    1.20 
2833                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
2834 schuur        1.1  }
2835                    
2836                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
2837 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2838                    {
2839                       CIMDateTime *dt = new CIMDateTime(CIMDateTime::getCurrentDateTime ());
2840                    
2841                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
2842 schuur        1.1  }
2843                    
2844                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
2845 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jC, jint jD)
2846                    {
2847                       CIMDateTime *ct = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jC);
2848                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jD);
2849                    
2850 schuur        1.1     return (jboolean)(ct->getDifference(*ct, *dt)>0);
2851                    }
2852                    
2853                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
2854 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
2855                    {
2856                       CIMDateTime *cdt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
2857                    
2858 schuur        1.1     delete cdt;
2859 mark.hamzy    1.20 
2860                       DEBUG_ConvertCleanup (jint, jDT);
2861 schuur        1.1  }
2862                    
2863                    // -------------------------------------
2864                    // ---
2865                    // -		CIMMethod
2866                    // ---
2867                    // -------------------------------------
2868                    
2869                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
2870 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
2871                    {
2872                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
2873                    
2874 mark.hamzy    1.24    return DEBUG_ConvertCToJava (CIMType, jint, new CIMType (cm->getType()));
2875 schuur        1.1  }
2876                    
2877                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
2878 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
2879                    {
2880                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
2881                    
2882 schuur        1.1     delete cm;
2883 mark.hamzy    1.20 
2884                       DEBUG_ConvertCleanup (jint, jM);
2885 schuur        1.1  }
2886                    
2887                    // -------------------------------------
2888                    // ---
2889                    // -		CIMValue
2890                    // ---
2891                    // -------------------------------------
2892                    
2893                    
2894                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
2895 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned)
2896                    {
2897                       CIMValue *cv = NULL;
2898                    
2899                       if (notSigned)
2900                          cv=new CIMValue((Uint8)jb);
2901                       else
2902                          cv=new CIMValue((Sint8)jb);
2903                    
2904                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2905 schuur        1.1  }
2906                    
2907                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
2908 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned)
2909                    {
2910                       CIMValue *cv = NULL;
2911                    
2912                       if (notSigned)
2913                          cv=new CIMValue((Uint16)js);
2914                       else
2915                          cv=new CIMValue((Sint16)js);
2916                    
2917                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2918 schuur        1.1  }
2919                    
2920                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue_makeInt
2921 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned)
2922                    {
2923                       CIMValue *cv = NULL;
2924                    
2925                       if (notSigned)
2926                          cv = new CIMValue((Uint32)ji);
2927                       else
2928                          cv = new CIMValue((Sint32)ji);
2929                    
2930                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2931 schuur        1.1  }
2932                    
2933                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
2934 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned)
2935                    {
2936                       CIMValue *cv = NULL;
2937                    
2938                       if (notSigned)
2939                          cv=new CIMValue((Uint64)jl);
2940                       else
2941                          cv=new CIMValue((Sint64)jl);
2942                    
2943                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2944 schuur        1.1  }
2945                    
2946                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
2947 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jfloat jF)
2948                    {
2949                       CIMValue *cv = new CIMValue(jF);
2950                    
2951                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2952 schuur        1.1  }
2953                    
2954                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
2955 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jdouble jD)
2956                    {
2957                       CIMValue *cv = new CIMValue(jD);
2958                    
2959                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2960 schuur        1.1  }
2961                    
2962                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
2963 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jS)
2964                    {
2965                       const char *str = jEnv->GetStringUTFChars(jS,NULL);
2966                       CIMValue   *cv  = new CIMValue(String(str));
2967                    
2968 schuur        1.1     jEnv->ReleaseStringUTFChars(jS,str);
2969 mark.hamzy    1.20 
2970                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2971 schuur        1.1  }
2972                    
2973                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1ref
2974 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jR)
2975                    {
2976                       CIMObjectPath *ref = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jR);
2977                       CIMValue      *cv  = new CIMValue(*ref);
2978                    
2979                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2980 schuur        1.1  }
2981                    
2982                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
2983 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
2984                    {
2985                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
2986                       CIMValue    *cv = new CIMValue(*dt);
2987                    
2988                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2989 schuur        1.1  }
2990                    
2991                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
2992 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2993                    {
2994                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
2995                    
2996 schuur        1.1     return (jboolean)cv->isArray();
2997                    }
2998                    
2999                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
3000 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jboolean jB)
3001                    {
3002                       CIMValue *cv = new CIMValue((Boolean)jB);
3003                    
3004                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3005 schuur        1.1  }
3006                    
3007                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
3008 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned)
3009                    {
3010                       CIMValue *cv  = NULL;
3011                       jboolean  b;
3012                       jsize     len = jEnv->GetArrayLength(jshortA);
3013                       jshort   *jsA = jEnv->GetShortArrayElements(jshortA,&b);
3014                    
3015 schuur        1.1     if (notSigned) {
3016                          Array<Uint8> u8;
3017                          for (jsize i=0;i<len;i++)
3018                             u8.append((Uint8)jsA[i]);
3019                          cv=new CIMValue(u8);
3020                       }
3021                       else {
3022                          Array<Sint8> s8;
3023                          for (jsize i=0;i<len;i++)
3024                             s8.append((Sint8)jsA[i]);
3025                          cv=new CIMValue(s8);
3026                       }
3027 mark.hamzy    1.20 
3028                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3029 schuur        1.1  }
3030                    
3031                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
3032 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned)
3033                    {
3034                       CIMValue *cv  = NULL;
3035                       jboolean  b;
3036                       jsize     len = jEnv->GetArrayLength(jintA);
3037                       jint     *jiA = jEnv->GetIntArrayElements(jintA,&b);
3038                    
3039 schuur        1.1     if (notSigned) {
3040                          Array<Uint16> u16;
3041                          for (jsize i=0;i<len;i++)
3042                             u16.append((Uint16)jiA[i]);
3043                          cv=new CIMValue(u16);
3044                       }
3045                       else {
3046                          Array<Sint16> s16;
3047                          for (jsize i=0;i<len;i++)
3048                             s16.append((Sint16)jiA[i]);
3049                          cv=new CIMValue(s16);
3050                       }
3051 mark.hamzy    1.20 
3052                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3053 schuur        1.1  }
3054                    
3055                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
3056 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3057                    {
3058                       CIMValue *cv  = NULL;
3059                       jboolean  b;
3060                       jsize     len = jEnv->GetArrayLength(jlongA);
3061                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3062                    
3063 schuur        1.1     if (notSigned) {
3064                          Array<Uint32> u32;
3065                          for (jsize i=0;i<len;i++)
3066                             u32.append((Uint32)jlA[i]);
3067                          cv=new CIMValue(u32);
3068                       }
3069                       else {
3070                          Array<Sint32> s32;
3071                          for (jsize i=0;i<len;i++)
3072                             s32.append((Sint32)jlA[i]);
3073                          cv=new CIMValue(s32);
3074                       }
3075 mark.hamzy    1.20 
3076                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3077 schuur        1.1  }
3078                    
3079                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
3080 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3081                    {
3082                       CIMValue *cv  = NULL;
3083                       jboolean  b;
3084                       jsize     len = jEnv->GetArrayLength(jlongA);
3085                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3086                    
3087 schuur        1.1     if (notSigned) {
3088                          Array<Uint64> u64;
3089                          for (jsize i=0;i<len;i++)
3090                             u64.append((Uint64)jlA[i]);
3091                          cv=new CIMValue(u64);
3092                       }
3093                       else {
3094                          Array<Sint64> s64;
3095                          for (jsize i=0;i<len;i++)
3096                             s64.append((Sint64)jlA[i]);
3097                          cv=new CIMValue(s64);
3098                       }
3099 mark.hamzy    1.20 
3100                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3101 schuur        1.1  }
3102                    
3103                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
3104 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA)
3105                    {
3106                       CIMValue     *cv   = NULL;
3107                       jboolean      b;
3108                       jsize         len  = jEnv->GetArrayLength(jstringA);
3109 schuur        1.1     Array<String> strA;
3110                    
3111                       for (jsize i=0;i<len;i++) {
3112                          jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);
3113                          const char *str=jEnv->GetStringUTFChars(jsA,NULL);
3114                          strA.append(String(str));
3115                          jEnv->ReleaseStringUTFChars(jsA,str);
3116                       }
3117                    
3118                       cv=new CIMValue(strA);
3119 mark.hamzy    1.20 
3120                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3121 schuur        1.1  }
3122                    
3123                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
3124 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA)
3125                    {
3126                       CIMValue       *cv  = NULL;
3127                       jboolean        b;
3128                       jsize           len = jEnv->GetArrayLength(jboolA);
3129                       jboolean       *jbA = jEnv->GetBooleanArrayElements(jboolA,&b);
3130                       Array<Boolean>  bA;
3131                    
3132 schuur        1.1     for (jsize i=0;i<len;i++)
3133                          bA.append((Boolean)jbA[i]);
3134                       cv=new CIMValue(bA);
3135 mark.hamzy    1.20 
3136                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3137 schuur        1.1  }
3138                    
3139                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1refArray
3140 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3141                    {
3142                       CIMValue             *cv  = NULL;
3143                       jboolean              b;
3144                       jsize                 len = jEnv->GetArrayLength(jintA);
3145                       jint                 *jiA = jEnv->GetIntArrayElements(jintA,&b);
3146                       Array<CIMObjectPath>  cA;
3147                    
3148 schuur        1.1     for (jsize i=0;i<len;i++)
3149                          cA.append(*((CIMObjectPath*)jiA[i]));
3150                       cv=new CIMValue(cA);
3151 mark.hamzy    1.20 
3152                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3153 schuur        1.1  }
3154                    
3155                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
3156 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3157                    {
3158                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
3159                    
3160                       return DEBUG_ConvertCToJava (int, jint, pTypeToJType[cv->getType()]);
3161 schuur        1.1  }
3162                    
3163                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
3164 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3165                    {
3166                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3167                    
3168 schuur        1.1     return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
3169                    }
3170                    
3171                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
3172 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3173                    {
3174                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3175                    
3176 schuur        1.1     if (cv->isNull())
3177                          return NULL;
3178 mark.hamzy    1.20 
3179 schuur        1.1     CIMType type=cv->getType();
3180                    
3181                       if (!cv->isArray()) {
3182                          switch (type) {
3183                          case CIMTYPE_BOOLEAN:
3184                             Boolean bo;
3185                             cv->get(bo);
3186                             return jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo);
3187                             break;
3188                          case CIMTYPE_SINT8:
3189                             Sint8 s8;
3190                             cv->get(s8);
3191                             return jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8);
3192                             break;
3193                          case CIMTYPE_UINT8:
3194                             Uint8 u8;
3195                             cv->get(u8);
3196                             return jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8);
3197                             break;
3198                          case CIMTYPE_SINT16:
3199                             Sint16 s16;
3200 schuur        1.1           cv->get(s16);
3201                             return jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16);
3202                             break;
3203                          case CIMTYPE_UINT16:
3204                             Uint16 u16;
3205                             cv->get(u16);
3206                             return jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16);
3207                             break;
3208                          case CIMTYPE_SINT32:
3209                             Sint32 s32;
3210                             cv->get(s32);
3211                             return jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32);
3212                             break;
3213                          case CIMTYPE_UINT32:
3214                             Uint32 u32;
3215                             cv->get(u32);
3216                             return jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32);
3217                             break;
3218                          case CIMTYPE_SINT64:
3219                             Sint64 s64;
3220                             cv->get(s64);
3221 schuur        1.1           return jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64);
3222                             break;
3223                          case CIMTYPE_UINT64: {
3224                                Uint64 u64;
3225                                cv->get(u64);
3226                                jobject big=jEnv->CallStaticObjectMethod(classRefs[14],staticMethodIDs[0],u64);
3227                                return jEnv->NewObject(classRefs[11],instanceMethodIDs[11],big);
3228                             }
3229                             break;
3230                          case CIMTYPE_REAL32:
3231                             float f;
3232                             cv->get(f);
3233                             return jEnv->NewObject(classRefs[6],instanceMethodIDs[6],f);
3234                             break;
3235                          case CIMTYPE_REAL64:
3236                             double d;
3237                             cv->get(d);
3238                             return jEnv->NewObject(classRefs[7],instanceMethodIDs[7],d);
3239                             break;
3240                          case CIMTYPE_STRING: {
3241                                String s;
3242 schuur        1.1              jstring str;
3243                                cv->get(s);
3244                                str=jEnv->NewStringUTF(s.getCString());
3245                                return str;
3246                             }
3247                             break;
3248                          case CIMTYPE_REFERENCE:  {
3249                                CIMObjectPath ref;
3250                                cv->get(ref);
3251 mark.hamzy    1.20             jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref));
3252                                return jEnv->NewObject(classRefs[12],instanceMethodIDs[12],jOp);
3253 schuur        1.1           }
3254                             break;
3255                          case CIMTYPE_CHAR16:
3256                             throwCIMException(jEnv,"+++ Char16 not yet supported");
3257                             break;
3258                          case CIMTYPE_DATETIME: {
3259                                CIMDateTime dt;
3260                                cv->get(dt);
3261 mark.hamzy    1.20             jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt));
3262                                return jEnv->NewObject(classRefs[24],instanceMethodIDs[35],jDT);
3263 schuur        1.1           }
3264                             break;
3265 dave.sudlik   1.13       case CIMTYPE_OBJECT:
3266                             throwCIMException(jEnv,"+++ Object not yet supported");
3267                             break;
3268 schuur        1.1        default:
3269 mark.hamzy    1.17          throwCIMException(jEnv,"+++ unsupported type: ");
3270 schuur        1.1        }
3271                       }
3272                       else {
3273                          switch (type) {
3274                          case CIMTYPE_BOOLEAN: {
3275                                Array<Boolean> bo;
3276                                cv->get(bo);
3277                                int s=bo.size();
3278                                jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[1],0);
3279 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i,
3280 schuur        1.1                    jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo[i]));
3281                                return jbooleanA;
3282                             }
3283                             break;
3284                          case CIMTYPE_SINT8: {
3285                                Array<Sint8> s8;
3286                                cv->get(s8);
3287                                int s=s8.size();
3288                                jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[2],0);
3289 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i,
3290 schuur        1.1                 jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8[i]));
3291                                return jbyteA;
3292                             }
3293                             break;
3294                          case CIMTYPE_UINT8: {
3295                                Array<Uint8> u8;
3296                                cv->get(u8);
3297                                int s=u8.size();
3298                                jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[8],0);
3299 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
3300 schuur        1.1                 jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8[i]));
3301                                return jshortA;
3302                             }
3303                             break;
3304                          case CIMTYPE_SINT16: {
3305                                Array<Sint16> s16;
3306                                cv->get(s16);
3307                                int s=s16.size();
3308                                jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[3],0);
3309 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
3310 schuur        1.1                 jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16[i]));
3311                                return jshortA;
3312                             }
3313                             break;
3314                          case CIMTYPE_UINT16: {
3315                                Array<Uint16> u16;
3316                                cv->get(u16);
3317                                int s=u16.size();
3318                                jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[9],0);
3319 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
3320 schuur        1.1                 jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16[i]));
3321                                return jintA;
3322                             }
3323                             break;
3324                          case CIMTYPE_SINT32: {
3325                                Array<Sint32> s32;
3326                                cv->get(s32);
3327                                int s=s32.size();
3328                                jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[4],0);
3329 schuur        1.7              for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
3330 schuur        1.1                 jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32[i]));
3331                                return jintA;
3332                             }
3333                             break;
3334                          case CIMTYPE_UINT32: {
3335                                Array<Uint32> u32;
3336                                cv->get(u32);
3337                                int s=u32.size();
3338                                jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[10],0);
3339 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
3340 schuur        1.1                 jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32[i]));
3341                                return jlongA;
3342                             }
3343                             break;
3344                          case CIMTYPE_SINT64: {
3345                                Array<Sint64> s64;
3346                                cv->get(s64);
3347                                int s=s64.size();
3348                                jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[5],0);
3349 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
3350 schuur        1.1                 jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64[i]));
3351                                return jlongA;
3352                             }
3353                             break;
3354                          case CIMTYPE_UINT64:
3355                             throwCIMException(jEnv,"+++ UnisgnetInt64 not yet supported");
3356                             break;
3357                          case CIMTYPE_REAL32: {
3358                                Array<Real32> r32;
3359                                cv->get(r32);
3360                                int s=r32.size();
3361                                jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[6],0);
3362 schuur        1.7              for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i,
3363 schuur        1.1                 jEnv->NewObject(classRefs[6],instanceMethodIDs[6],r32[i]));
3364                                return jfloatA;
3365                             }
3366                             break;
3367                          case CIMTYPE_REAL64: {
3368                                Array<Real64> r64;
3369                                cv->get(r64);
3370                                int s=r64.size();
3371                                jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[7],0);
3372 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i,
3373 schuur        1.1                 jEnv->NewObject(classRefs[7],instanceMethodIDs[7],r64[i]));
3374                                return jdoubleA;
3375                             }
3376                             break;
3377                          case CIMTYPE_STRING: {
3378                                Array<String> str;
3379                                cv->get(str);
3380                                int s=str.size();
3381                                jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[22],0);
3382 r.kieninger   1.11             for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i,
3383 schuur        1.1                 jEnv->NewStringUTF(str[i].getCString()));
3384                                return jstringA;
3385                             }
3386                             break;
3387                          case CIMTYPE_REFERENCE:
3388                             throwCIMException(jEnv,"+++ Reference not yet supported");
3389                             break;
3390                          case CIMTYPE_CHAR16:
3391                             throwCIMException(jEnv,"+++ Char16 not yet supported");
3392                             break;
3393                          case CIMTYPE_DATETIME:
3394                             throwCIMException(jEnv,"+++ DateTime not yet supported");
3395                             break;
3396 dave.sudlik   1.13       case CIMTYPE_OBJECT:
3397                             throwCIMException(jEnv,"+++ Object not yet supported");
3398                             break;
3399 schuur        1.1        default:
3400                          throwCIMException(jEnv,"+++ unsupported type: ");
3401                          }
3402                       }
3403 mark.hamzy    1.20 
3404 schuur        1.1     return NULL;
3405                    }
3406                    
3407                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
3408 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3409                    {
3410                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3411                    
3412                       delete cv;
3413                    
3414                       DEBUG_ConvertCleanup (jint, jV);
3415 schuur        1.1  }
3416                    
3417                    // -------------------------------------
3418                    // ---
3419                    // -		CIMNameSpace
3420                    // ---
3421                    // -------------------------------------
3422                    
3423                    _nameSpace::_nameSpace() {
3424                       port_=0;
3425                       hostName_=System::getHostName();
3426                       nameSpace_="root/cimv2";
3427                    }
3428                    
3429                    _nameSpace::_nameSpace(String hn) {
3430                       port_=0;
3431                       hostName_=hn;
3432                       nameSpace_="root/cimv2";
3433                    }
3434                    
3435                    _nameSpace::_nameSpace(String hn, String ns) {
3436 schuur        1.1      port_=0;
3437                        hostName_=hn;
3438                        nameSpace_=ns;
3439                    }
3440                    
3441                    int _nameSpace::port() {
3442                       if (port_) return port_;
3443                       port_=5988;
3444                       if (hostName_.subString(0,7)=="http://") {
3445                          protocol_="http://";
3446                          hostName_=hostName_.subString(7);
3447                       }
3448                       Sint32 p=hostName_.reverseFind(':');
3449                       if (p>=0) {
3450 kumpf         1.25       if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9'))
3451 schuur        1.1           port_=atoi(hostName_.subString(p+1).getCString());
3452                          hostName_.remove(p);
3453                       }
3454                       return port_;
3455                    }
3456                    
3457                    String _nameSpace::hostName() {
3458                       port();
3459                       return hostName_;
3460                    }
3461                    
3462                    String _nameSpace::nameSpace() {
3463                       return nameSpace_;
3464                    }
3465                    
3466                    
3467                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
3468 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs)
3469                    {
3470                      return DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace());
3471 schuur        1.1  }
3472                    
3473                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
3474 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn)
3475                    {
3476                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
3477                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(hn));
3478                    
3479 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
3480 mark.hamzy    1.20 
3481 schuur        1.1     return cInst;
3482                    }
3483                    
3484                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
3485 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs)
3486                    {
3487                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
3488                       const char *ns    = jEnv->GetStringUTFChars(jNs,NULL);
3489                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(String(hn),String(ns)));
3490                    
3491 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
3492                       jEnv->ReleaseStringUTFChars(jNs,ns);
3493 mark.hamzy    1.20 
3494 schuur        1.1     return cInst;
3495                    }
3496                    
3497                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
3498 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
3499                    {
3500                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3501                       const String &hn  = cNs->hostName_;
3502                       jstring       str = jEnv->NewStringUTF(hn.getCString());
3503                    
3504 schuur        1.1     return str;
3505                    }
3506                    
3507                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
3508 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
3509                    {
3510                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3511                       const String &ns  = cNs->nameSpace_;
3512                       jstring       str = jEnv->NewStringUTF(ns.getCString());
3513                    
3514 schuur        1.1     return str;
3515                    }
3516                    
3517                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
3518 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn)
3519                    {
3520                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3521                       const char *str = jEnv->GetStringUTFChars(jHn,NULL);
3522                    
3523 schuur        1.1     cNs->port_=0;
3524                       cNs->hostName_=str;
3525                       jEnv->ReleaseStringUTFChars(jHn,str);
3526                    }
3527                    
3528                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
3529 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN)
3530                    {
3531 mark.hamzy    1.22    _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3532 mark.hamzy    1.20    const char *str = jEnv->GetStringUTFChars(jN,NULL);
3533                    
3534 schuur        1.1     cNs->nameSpace_=str;
3535                       jEnv->ReleaseStringUTFChars(jN,str);
3536                    }
3537                    
3538 mark.hamzy    1.22 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1finalize
3539                       (JNIEnv *jEnv, jobject jThs, jint jNs)
3540                    {
3541                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3542                    
3543                       delete cNs;
3544                    
3545                       DEBUG_ConvertCleanup (jint, jNs);
3546                    }
3547                    
3548 schuur        1.1  // -------------------------------------
3549                    // ---
3550                    // -		Enumerators
3551                    // ---
3552                    // -------------------------------------
3553                    
3554 schuur        1.4  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
3555 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
3556                    {
3557                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
3558                    
3559                       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass((*enm)[pos]));
3560 schuur        1.4  }
3561                    
3562                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
3563 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
3564                    {
3565                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
3566                    
3567 schuur        1.4     return enm->size();
3568                    }
3569                    
3570 schuur        1.1  
3571                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
3572 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
3573                    {
3574                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
3575                    
3576                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance((*enm)[pos]));
3577 schuur        1.1  }
3578                    
3579                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
3580 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
3581                    {
3582                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
3583                    
3584 schuur        1.1     return enm->size();
3585                    }
3586                    
3587 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
3588                      (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
3589                    {
3590                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
3591 schuur        1.1  
3592 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath((*enm)[pos]));
3593 schuur        1.1  }
3594                    
3595                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
3596 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
3597                    {
3598                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
3599                    
3600 schuur        1.1     return enm->size();
3601                    }
3602                    
3603 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
3604 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
3605                    {
3606                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
3607                    
3608                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, new CIMQualifierDecl((*enm)[pos]));
3609 schuur        1.5  }
3610                    
3611                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
3612 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
3613                    {
3614                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
3615                    
3616 schuur        1.5     return enm->size();
3617                    }
3618                    
3619 schuur        1.1  // -------------------------------------
3620                    // ---
3621                    // -		CIMClient
3622                    // ---
3623                    // -------------------------------------
3624                    
3625 schuur        1.5  void checkNs(CIMObjectPath *cop, jint jNs) {
3626                       if (cop->getNameSpace().isNull()) {
3627                          _nameSpace *ns=(_nameSpace*)jNs;
3628                          cop->setNameSpace(CIMNamespaceName(ns->nameSpace()));
3629                       }
3630                    }
3631                    
3632 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
3633 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw)
3634                    {
3635                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
3636 schuur        1.5  
3637 schuur        1.1     const char *un=jEnv->GetStringUTFChars(jUn,NULL);
3638                       const char *pw=jEnv->GetStringUTFChars(jPw,NULL);
3639 schuur        1.5  
3640 schuur        1.1     try {
3641 schuur        1.5        JMPIjvm::cacheIDs(jEnv);
3642 schuur        1.1        CIMClient *cc=new CIMClient();
3643                          cc->connect(cNs->hostName(),cNs->port(),un,pw);
3644                          jEnv->ReleaseStringUTFChars(jUn,un);
3645                          jEnv->ReleaseStringUTFChars(jPw,pw);
3646 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClient*, jint, cc);
3647 schuur        1.1     }
3648 schuur        1.5     Catch(jEnv);
3649 schuur        1.1     return 0;
3650                    }
3651                    
3652                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
3653 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc)
3654                    {
3655                       CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3656                    
3657 schuur        1.1     try {
3658                          cCc->disconnect();
3659                       }
3660 schuur        1.5     Catch(jEnv);
3661 schuur        1.1  }
3662 schuur        1.5  
3663 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
3664 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo,
3665 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
3666                    {
3667                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3668                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3669                       CIMPropertyList  pl=getList(jEnv,jPl);
3670                    
3671 schuur        1.1     try {
3672 schuur        1.5        checkNs(cop,jNs);
3673 schuur        1.6        CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
3674                                    (Boolean)iq,(Boolean)ic,pl);
3675 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
3676 schuur        1.1     }
3677 schuur        1.5     Catch(jEnv);
3678 mark.hamzy    1.20 
3679 schuur        1.1     return 0;
3680                    }
3681 schuur        1.3  
3682                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
3683 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
3684                    {
3685                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3686                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3687                    
3688 schuur        1.3     try {
3689 schuur        1.5        checkNs(cop,jNs);
3690 schuur        1.3        cCc->deleteClass(cop->getNameSpace(),cop->getClassName());
3691                       }
3692 schuur        1.5     Catch(jEnv);
3693 schuur        1.3  }
3694                    
3695                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
3696 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl)
3697                    {
3698                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3699                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3700                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
3701 schuur        1.3  
3702                       try {
3703                          cCc->createClass(cop->getNameSpace(),*cl);
3704                       }
3705 schuur        1.5     Catch(jEnv);
3706 schuur        1.3  }
3707                    
3708                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
3709 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl)
3710                    {
3711                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3712                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3713                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
3714 schuur        1.3  
3715 schuur        1.1     try {
3716 schuur        1.5       checkNs(cop,jNs);
3717 schuur        1.3       cCc->modifyClass(cop->getNameSpace(),*cl);
3718 schuur        1.1     }
3719 schuur        1.5     Catch(jEnv);
3720 schuur        1.1  }
3721 schuur        1.3  
3722                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses
3723 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic)
3724                    {
3725                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3726                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3727                    
3728 schuur        1.1     try {
3729 schuur        1.5        checkNs(cop,jNs);
3730 schuur        1.3        Array<CIMClass> enm=cCc->enumerateClasses(
3731 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic);
3732 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(enm));
3733 schuur        1.1     }
3734 schuur        1.5     Catch(jEnv);
3735 mark.hamzy    1.20 
3736 schuur        1.1     return 0;
3737                    }
3738                    
3739 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
3740 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
3741                    {
3742                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3743                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3744                       CIMNamespaceName  ns  = cop->getNameSpace();
3745                    
3746 schuur        1.1     try {
3747 schuur        1.5        checkNs(cop,jNs);
3748 schuur        1.7        Array<CIMName> enm=cCc->enumerateClassNames(ns,cop->getClassName(),(Boolean)deep);
3749 schuur        1.3        Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
3750                          for (int i=0,m=enm.size(); i<m; i++) {
3751                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
3752                          }
3753 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
3754 schuur        1.3     }
3755 schuur        1.5     Catch(jEnv);
3756 mark.hamzy    1.20 
3757 schuur        1.3     return 0;
3758                    }
3759                    
3760 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers
3761 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop)
3762                    {
3763                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3764                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3765                    
3766 schuur        1.6     try {
3767                          checkNs(cop,jNs);
3768 mark.hamzy    1.24 
3769                          Array<CIMQualifierDecl> enm=cCc->enumerateQualifiers(cop->getNameSpace());
3770                    
3771 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMQualifierDecl>*, jint, new Array<CIMQualifierDecl>(enm));
3772 schuur        1.6     }
3773                       Catch(jEnv);
3774 mark.hamzy    1.20 
3775 schuur        1.6     return 0;
3776                    }
3777                    
3778 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
3779 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo,
3780 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
3781                    {
3782                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3783                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3784                       CIMPropertyList   pl  = getList(jEnv,jPl);
3785 schuur        1.5  
3786 schuur        1.3     try {
3787 schuur        1.5        checkNs(cop,jNs);
3788 mark.hamzy    1.24 
3789                          CIMInstance inst=cCc->getInstance(cop->getNameSpace(),
3790                                                            *cop,
3791                                                            (Boolean)lo,
3792                                                            (Boolean)iq,
3793                                                            (Boolean)ic,
3794                                                            pl);
3795                    
3796 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(inst));
3797 schuur        1.1     }
3798 schuur        1.5     Catch(jEnv);
3799 mark.hamzy    1.20 
3800 schuur        1.1     return 0;
3801                    }
3802                    
3803 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
3804 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
3805                    {
3806                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3807                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3808                    
3809 schuur        1.3     try {
3810 schuur        1.5        checkNs(cop,jNs);
3811 schuur        1.3        cCc->deleteInstance(cop->getNameSpace(),*cop);
3812                       }
3813 schuur        1.5     Catch(jEnv);
3814 schuur        1.3  }
3815                    
3816 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
3817 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi)
3818                    {
3819                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3820                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3821                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
3822                    
3823 schuur        1.1     try {
3824 schuur        1.5        checkNs(cop,jNs);
3825 schuur        1.6        ci->setPath(*cop);
3826 schuur        1.1        CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
3827 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
3828 schuur        1.1     }
3829 schuur        1.5     Catch(jEnv);
3830 mark.hamzy    1.20 
3831 schuur        1.5     return 0;
3832 schuur        1.1  }
3833 schuur        1.3  
3834 schuur        1.6  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance
3835                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi,
3836 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
3837                    {
3838                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3839                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3840                       CIMInstance     *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
3841                       CIMPropertyList  pl  = getList(jEnv,jPl);
3842                    
3843 schuur        1.1     try {
3844 schuur        1.6        checkNs(cop,jNs);
3845                          ci->setPath(*cop);
3846                          cCc->modifyInstance(cop->getNameSpace(),*ci,(Boolean)iq,pl);
3847 schuur        1.1     }
3848 schuur        1.5     Catch(jEnv);
3849 schuur        1.3  }
3850                    
3851                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
3852 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo,
3853 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
3854                    {
3855                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3856                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3857                       CIMPropertyList  pl  = getList(jEnv,jPl);
3858                    
3859 schuur        1.3     try {
3860 schuur        1.5        checkNs(cop,jNs);
3861 schuur        1.6        CIMPropertyList props;
3862 schuur        1.3        Array<CIMInstance> enm=cCc->enumerateInstances(
3863 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic,pl);
3864 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(enm));
3865 schuur        1.3     }
3866 schuur        1.5     Catch(jEnv);
3867 mark.hamzy    1.20 
3868 schuur        1.3     return 0;
3869                    }
3870                    
3871                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
3872 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
3873                    {
3874                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3875                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3876                    
3877 schuur        1.3     try {
3878 schuur        1.5        checkNs(cop,jNs);
3879 schuur        1.3        Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
3880                             cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
3881 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
3882 schuur        1.3     }
3883 schuur        1.5     Catch(jEnv);
3884 mark.hamzy    1.20 
3885 schuur        1.5     return 0;
3886                    }
3887                    
3888                    
3889                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
3890 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
3891                    {
3892                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3893                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3894                    
3895 schuur        1.5     try {
3896                          checkNs(cop,jNs);
3897                          CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName()));
3898 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, val);
3899 schuur        1.3     }
3900 schuur        1.5     Catch(jEnv);
3901 mark.hamzy    1.20 
3902 schuur        1.3     return 0;
3903                    }
3904                    
3905 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
3906 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
3907                    {
3908                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3909                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3910                    
3911 schuur        1.5     try {
3912                          checkNs(cop,jNs);
3913                          cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName());
3914                       }
3915                       Catch(jEnv);
3916                    }
3917                    
3918                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
3919 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ)
3920                    {
3921                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3922                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3923                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3924                    
3925 schuur        1.5     try {
3926                          checkNs(cop,jNs);
3927                          cCc->setQualifier(cop->getNameSpace(),*qt);
3928                       }
3929                       Catch(jEnv);
3930                    }
3931                    
3932 schuur        1.1  
3933                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
3934 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn)
3935                    {
3936                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3937                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3938                       const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
3939                       CIMName        pName(str);
3940                    
3941 schuur        1.3     jEnv->ReleaseStringUTFChars(jPn,str);
3942                       try {
3943 schuur        1.5        checkNs(cop,jNs);
3944 schuur        1.3        CIMValue *val=new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
3945 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
3946 schuur        1.3     }
3947 schuur        1.5     Catch(jEnv);
3948 mark.hamzy    1.20 
3949 schuur        1.3     return 0;
3950                    }
3951 schuur        1.5  
3952 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
3953 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV)
3954                    {
3955                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3956                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3957 mark.hamzy    1.22    CIMValue      *val = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3958 mark.hamzy    1.20    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
3959                       CIMName        pName(str);
3960                    
3961 schuur        1.3     jEnv->ReleaseStringUTFChars(jPn,str);
3962                       try {
3963 schuur        1.5        checkNs(cop,jNs);
3964 schuur        1.3        cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
3965                       }
3966 schuur        1.5     Catch(jEnv);
3967 schuur        1.3  }
3968                    
3969                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
3970 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut)
3971                    {
3972                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
3973                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
3974                       const char    *str = jEnv->GetStringUTFChars(jMn,NULL);
3975                       CIMName        method(str);
3976                    
3977 schuur        1.3     jEnv->ReleaseStringUTFChars(jMn,str);
3978                    
3979                       Array<CIMParamValue> in;
3980                       Array<CIMParamValue> out;
3981                    
3982 schuur        1.6     for (int i=0,m=jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i<m; i++) {
3983 schuur        1.3         JMPIjvm::checkException(jEnv);
3984 mark.hamzy    1.20 
3985 schuur        1.6         jobject jProp=jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);
3986 schuur        1.3         JMPIjvm::checkException(jEnv);
3987 mark.hamzy    1.20 
3988                           jint         jp = jEnv->CallIntMethod(jProp,instanceMethodIDs[29]);
3989                           CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
3990                    
3991 schuur        1.3         JMPIjvm::checkException(jEnv);
3992 mark.hamzy    1.20 
3993 schuur        1.3         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
3994                       }
3995                       try {
3996 schuur        1.5        checkNs(cop,jNs);
3997 schuur        1.3        CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
3998                    
3999                          for (int i=0,m=out.size(); i<m; i++) {
4000 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
4001                             const CIMValue       v    = parm.getValue();
4002                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
4003                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
4004                    
4005                             jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],jp);
4006                    
4007 schuur        1.6           jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);
4008 schuur        1.3        }
4009 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
4010                       }
4011 schuur        1.5     Catch(jEnv);
4012 mark.hamzy    1.20 
4013 schuur        1.3     return 0;
4014                    }
4015                    
4016 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
4017                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,
4018 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
4019                    {
4020                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4021                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4022                       const char    *str = jEnv->GetStringUTFChars(jMn,NULL);
4023                       CIMName        method(str);
4024                    
4025 schuur        1.7     jEnv->ReleaseStringUTFChars(jMn,str);
4026                    
4027                       Array<CIMParamValue> in;
4028                       Array<CIMParamValue> out;
4029                    
4030                       for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
4031                           JMPIjvm::checkException(jEnv);
4032 mark.hamzy    1.20 
4033 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
4034                           JMPIjvm::checkException(jEnv);
4035 mark.hamzy    1.20 
4036                           jint           jp = jEnv->CallIntMethod(jArg,instanceMethodIDs[39]);
4037                           CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
4038                    
4039 schuur        1.7         JMPIjvm::checkException(jEnv);
4040 mark.hamzy    1.20 
4041 schuur        1.7         in.append(*p);
4042                       }
4043                       try {
4044                          checkNs(cop,jNs);
4045                          CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
4046                    
4047                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
4048 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
4049                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
4050                    
4051                             jEnv->SetObjectArrayElement(jOut,
4052                                                         i,
4053                                                         jEnv->NewObject(classRefs[29],instanceMethodIDs[40],jParm));
4054 schuur        1.7        }
4055 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
4056 schuur        1.7     }
4057                       Catch(jEnv);
4058 mark.hamzy    1.20 
4059 schuur        1.6     return 0;
4060                    }
4061                    
4062 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
4063 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl)
4064                    {
4065                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4066                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4067                       const char    *str = jEnv->GetStringUTFChars(jQuery,NULL);
4068                       String         query(str);
4069 schuur        1.3  
4070 mark.hamzy    1.16 /* Note:
4071                    ** This does not work for some reason on the client java code:
4072 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));
4073 mark.hamzy    1.16 ** What does work is:
4074                    **   printf ("This is a test\n");
4075                    */
4076                    
4077 schuur        1.3     jEnv->ReleaseStringUTFChars(jQuery,str);
4078 mark.hamzy    1.16 
4079 schuur        1.3     str=jEnv->GetStringUTFChars(jQl,NULL);
4080                       String ql(str);
4081 mark.hamzy    1.16 
4082 schuur        1.3     jEnv->ReleaseStringUTFChars(jQl,str);
4083                    
4084                       try {
4085 schuur        1.5        checkNs(cop,jNs);
4086 mark.hamzy    1.20       Array<CIMObject> enm=cCc->execQuery(cop->getNameSpace(),ql,query);
4087 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4088                          for (int i=0,m=enm.size(); i<m; i++) {
4089                             enmInst->append(CIMInstance(enm[i]));
4090                          }
4091 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4092 schuur        1.3     }
4093 schuur        1.5     Catch(jEnv);
4094 mark.hamzy    1.20 
4095 schuur        1.3     return 0;
4096                    }
4097                    
4098 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
4099 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4100 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
4101                    {
4102                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4103                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4104                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4105                       CIMName        assocClass(str);
4106 schuur        1.3  
4107                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4108                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4109 mark.hamzy    1.20 
4110 schuur        1.3     CIMName resultClass(str);
4111 mark.hamzy    1.20 
4112 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4113                       str=jEnv->GetStringUTFChars(jRole,NULL);
4114 mark.hamzy    1.20 
4115 schuur        1.3     String role(str);
4116 mark.hamzy    1.20 
4117 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4118                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4119 mark.hamzy    1.20 
4120 schuur        1.3     String resultRole(str);
4121 mark.hamzy    1.20 
4122 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4123                    
4124                       try {
4125 schuur        1.5        checkNs(cop,jNs);
4126 schuur        1.3        Array<CIMObjectPath> enm=cCc->associatorNames(
4127                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
4128 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4129 schuur        1.3     }
4130 schuur        1.5     Catch(jEnv);
4131 mark.hamzy    1.20 
4132 schuur        1.3     return 0;
4133                    }
4134                    
4135 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
4136 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4137 schuur        1.3     jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
4138 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
4139                    {
4140                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4141                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4142                       CIMPropertyList  pl  = getList(jEnv,jPl);
4143                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4144                       CIMName          assocClass(str);
4145 schuur        1.3  
4146                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4147                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4148 mark.hamzy    1.20 
4149 schuur        1.3     CIMName resultClass(str);
4150 mark.hamzy    1.20 
4151 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4152                       str=jEnv->GetStringUTFChars(jRole,NULL);
4153 mark.hamzy    1.20 
4154 schuur        1.3     String role(str);
4155 mark.hamzy    1.20 
4156 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4157                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4158 mark.hamzy    1.20 
4159 schuur        1.3     String resultRole(str);
4160 mark.hamzy    1.20 
4161 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4162                    
4163                       try {
4164 schuur        1.5        checkNs(cop,jNs);
4165 schuur        1.3        Array<CIMObject> enm=cCc->associators(
4166                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
4167 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
4168 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4169                          for (int i=0,m=enm.size(); i<m; i++) {
4170                             enmInst->append(CIMInstance(enm[i]));
4171                          }
4172 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4173 schuur        1.3     }
4174 schuur        1.5     Catch(jEnv);
4175 mark.hamzy    1.20 
4176 schuur        1.3     return 0;
4177                    }
4178                    
4179 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
4180 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4181 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
4182                    {
4183                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4184                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4185                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4186                       CIMName        assocClass(str);
4187 schuur        1.3  
4188                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4189                       str=jEnv->GetStringUTFChars(jRole,NULL);
4190 mark.hamzy    1.20 
4191 schuur        1.3     String role(str);
4192 mark.hamzy    1.20 
4193 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4194                    
4195                       try {
4196 schuur        1.5        checkNs(cop,jNs);
4197 schuur        1.3        Array<CIMObjectPath> enm=cCc->referenceNames(
4198                             cop->getNameSpace(),*cop,assocClass,role);
4199 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4200 schuur        1.3     }
4201 schuur        1.5     Catch(jEnv);
4202 mark.hamzy    1.20 
4203 schuur        1.3     return 0;
4204                    }
4205                    
4206 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
4207 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4208 schuur        1.3     jstring jAssocClass, jstring jRole,
4209 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
4210                    {
4211                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4212                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4213                       CIMPropertyList  pl  = getList(jEnv,jPl);
4214                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4215                       CIMName          assocClass(str);
4216 schuur        1.3  
4217                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4218                       str=jEnv->GetStringUTFChars(jRole,NULL);
4219 mark.hamzy    1.20 
4220 schuur        1.3     String role(str);
4221 mark.hamzy    1.20 
4222 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4223                    
4224                       try {
4225 schuur        1.5        checkNs(cop,jNs);
4226 schuur        1.3        Array<CIMObject> enm=cCc->references(
4227                             cop->getNameSpace(),*cop,assocClass,role,
4228 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
4229 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4230                          for (int i=0,m=enm.size(); i<m; i++) {
4231                             enmInst->append(CIMInstance(enm[i]));
4232                          }
4233 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4234 schuur        1.3     }
4235 schuur        1.5     Catch(jEnv);
4236 mark.hamzy    1.20 
4237 schuur        1.5     return 0;
4238                    }
4239                    
4240 schuur        1.6  static int normalizeNs(String &ns, String &nsBase, String &lastNsComp) {
4241                       Uint32 n=ns.size();
4242                       if (ns[n-1]=='/') {
4243                          if (n>=2) ns=ns.subString(0,n-2);
4244                       }
4245                    
4246                       lastNsComp=ns;
4247                       nsBase="root";
4248                    
4249                       n=ns.reverseFind('/');
4250                       if (n!=PEG_NOT_FOUND) {
4251                          lastNsComp=ns.subString(n+1);
4252                          nsBase=ns.subString(0,n);
4253                       }
4254                       return 0;
4255                    }
4256                    
4257 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
4258 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
4259                    {
4260                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4261                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
4262                       String      ns(str);
4263 schuur        1.5  
4264                       jEnv->ReleaseStringUTFChars(jNs,str);
4265 schuur        1.6  
4266                       String lastNsComp;
4267                       String nsBase;
4268                    
4269                       normalizeNs(ns,nsBase,lastNsComp);
4270 schuur        1.5  
4271                       CIMInstance newInstance(CIMName("__Namespace"));
4272 schuur        1.6     newInstance.addProperty(CIMProperty(CIMName ("name"),lastNsComp));
4273 schuur        1.5  
4274                       try {
4275 schuur        1.6        cCc->createInstance(CIMNamespaceName(nsBase),newInstance);
4276 schuur        1.3     }
4277 schuur        1.5     Catch(jEnv);
4278                    }
4279                    
4280                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
4281 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec)
4282                    {
4283                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4284                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4285                       String         ns  = cop->getNameSpace().getString();
4286 schuur        1.6  
4287                       try {
4288                          Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
4289                             cop->getNameSpace(),CIMName("__Namespace"));
4290                          for (int i=0,s=enm.size(); i<s; i++) {
4291                             CIMObjectPath &cop=enm[i];
4292                             const Array<CIMKeyBinding>& kb=cop.getKeyBindings();
4293 mark.hamzy    1.17          const String &n=kb[0].getValue();
4294 mark.hamzy    1.16          if (!deep && n.find('/')!=PEG_NOT_FOUND)
4295                                continue;
4296 mark.hamzy    1.17          String x=ns+"/"+n;
4297                             jstring str=jEnv->NewStringUTF(x.getCString());
4298 schuur        1.6           jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],str);
4299                          }
4300                       }
4301                       Catch(jEnv);
4302 mark.hamzy    1.20 
4303 schuur        1.5     return jVec;
4304                    }
4305                    
4306                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
4307 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
4308                    {
4309                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4310                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
4311                       String      ns(str);
4312 schuur        1.6  
4313                       jEnv->ReleaseStringUTFChars(jNs,str);
4314 mark.hamzy    1.20 
4315 schuur        1.6     String lastNsComp;
4316                       String nsBase;
4317                    
4318                       normalizeNs(ns,nsBase,lastNsComp);
4319                    
4320                       CIMObjectPath cop(String::EMPTY,CIMNamespaceName(nsBase),CIMName("__Namespace"));
4321                       Array<CIMKeyBinding> kb;
4322                       kb.append(CIMKeyBinding(("Name"),CIMValue(lastNsComp)));
4323                       cop.setKeyBindings(kb);
4324                    
4325                       try {
4326                          cCc->deleteInstance(CIMNamespaceName(nsBase),cop);
4327                       }
4328                       Catch(jEnv);
4329 schuur        1.3  }
4330 schuur        1.1  
4331 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1finalize
4332                       (JNIEnv *jEnv, jobject jThs, jint jCc)
4333                    {
4334                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4335                    
4336                       delete cCc;
4337                    
4338                       DEBUG_ConvertCleanup (jint, jCc);
4339                    }
4340                    
4341 schuur        1.5  } // extern "C"
4342 schuur        1.1  
4343                    PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2