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

   1 schuur 1.1 //%2003////////////////////////////////////////////////////////////////////////
   2            //
   3            // 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            // IBM Corp.; EMC Corporation, The Open Group.
   7            //
   8            // Permission is hereby granted, free of charge, to any person obtaining a copy
   9            // of this software and associated documentation files (the "Software"), to
  10            // deal in the Software without restriction, including without limitation the
  11            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  12            // sell copies of the Software, and to permit persons to whom the Software is
  13            // furnished to do so, subject to the following conditions:
  14            //
  15            // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  16            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  17            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  18            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  19            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  20            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  21            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  22 schuur 1.1 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23            //
  24            //==============================================================================
  25            //
  26            // Author:      Adrian Schuur, schuur@de.ibm.com
  27            //
  28            // Modified By: Adrian Dutta
  29            //              Andy Viciu
  30            //              Magda Vacarelu
  31            //
  32            //%/////////////////////////////////////////////////////////////////////////////
  33            
  34            
  35            #include "JMPIImpl.h"
  36            
  37            #include <dlfcn.h>
  38            #include <iostream>
  39            
  40            #include <Pegasus/Common/Config.h>
  41            #include <Pegasus/Common/System.h>
  42            #include <Pegasus/Common/CIMClass.h>
  43 schuur 1.1 #include <Pegasus/Common/CIMInstance.h>
  44            #include <Pegasus/Common/CIMObjectPath.h>
  45            #include <Pegasus/Common/CIMProperty.h>
  46            #include <Pegasus/Common/CIMType.h>
  47            #include <Pegasus/Common/OperationContext.h>
  48            #include <Pegasus/Provider/CIMOMHandle.h>
  49            #include <Pegasus/Client/CIMClient.h>
  50            
  51            PEGASUS_USING_STD;
  52            PEGASUS_NAMESPACE_BEGIN
  53            
  54            JavaVM *JMPIjvm::jvm=NULL;
  55            JvmVector JMPIjvm::jv;
  56            
  57            typedef struct {
  58              int clsIndex;
  59              const char * methodName;
  60              const char * signature;
  61            } METHOD_STRUCT;
  62            
  63            const char* classNames[]={
  64 schuur 1.1       "java/util/Vector" , // 0
  65                  "java/lang/Boolean", // 1
  66                  "java/lang/Byte",    // 2
  67                  "java/lang/Short",   // 3
  68                  "java/lang/Integer", // 4
  69                  "java/lang/Long",    // 5
  70                  "java/lang/Float",   // 6
  71                  "java/lang/Double",  // 7
  72                  "org/pegasus/jmpi/UnsignedInt8",    // 8
  73                  "org/pegasus/jmpi/UnsignedInt16",   // 9
  74                  "org/pegasus/jmpi/UnsignedInt32",   // 10
  75                  "org/pegasus/jmpi/UnsignedInt64",   // 11
  76                  "org/pegasus/jmpi/CIMObjectPath",   // 12
  77                  "org/pegasus/jmpi/CIMException",    // 13
  78                  "java/math/BigInteger",             // 14
  79                  "org/pegasus/jmpi/CIMProperty",     // 15
  80            
  81                  "org/pegasus/jmpi/CIMOMHandle",     // 16
  82                  "org/pegasus/jmpi/CIMClass",        // 17
  83                  "org/pegasus/jmpi/CIMInstance",     // 18
  84                  "org/pegasus/jmpi/CIMValue",        // 19
  85 schuur 1.1       "java/lang/Object",     // 20
  86                  "java/lang/Throwable",  // 21
  87                  "java/lang/String",     // 22
  88                  "org/pegasus/jmpi/JarClassLoader",  // 23
  89                  "org/pegasus/jmpi/CIMDateTime",      // 24
  90            };
  91            
  92            
  93            const METHOD_STRUCT instanceMethodNames[]={
  94            /*00*/ { 0, "<init>",        "()V" },					
  95            /*01*/ { 1, "<init>",        "(Z)V" },
  96            /*02*/ { 2, "<init>",        "(B)V" },
  97            /*03*/ { 3, "<init>",        "(S)V" },
  98            /*04*/ { 4, "<init>",        "(I)V" },
  99            /*05*/ { 5, "<init>",        "(J)V" },    // ???
 100            /*06*/ { 6, "<init>",        "(F)V" },
 101            /*07*/ { 7, "<init>",        "(D)V" },
 102            /*08*/ { 8, "<init>",        "(S)V" },
 103            /*09*/ { 9, "<init>",        "(I)V" },
 104            /*10*/ { 10,"<init>",        "(J)V" },
 105            /*11*/ { 11,"<init>",        "(Ljava/math/BigInteger;)V" },
 106 schuur 1.1 /*12*/ { 12,"<init>",        "(I)V" },
 107            /*13*/ { 13,"<init>",        "(Ljava/lang/String;)V" },
 108            /*14*/ { 15,"<init>",        "(I)V" },
 109            /*15*/ { 0, "addElement",    "(Ljava/lang/Object;)V" },
 110            
 111            /*16*/ { 0, "elementAt",     "(I)Ljava/lang/Object;" },
 112            /*17*/ { 16,"<init>",        "(I)V" },
 113            /*18*/ { 13,"<init>",        "(I)V" },
 114            /*19*/ { 17,"<init>",        "(I)V" },
 115            /*20*/ { 18,"<init>",        "(I)V" },
 116            /*21*/ { 12,"<init>",        "(I)V" },
 117            /*22*/ { 12,"cInst",         "()I" },
 118            /*23*/ { 18,"cInst",         "()I" },
 119            /*24*/ { 17,"cInst",         "()I" },
 120            /*25*/ { 20,"toString",      "()Ljava/lang/String;" },
 121            /*26*/ { 21,"getMessage",    "()Ljava/lang/String;" },
 122            /*27*/ { 13,"getID",         "()Ljava/lang/String;" },
 123            /*28*/ { 0, "size",          "()I" },
 124            /*29*/ { 15,"cInst",         "()I" },
 125            /*30*/ { 16,"getClass",      "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 126            /*31*/ { 0, "removeElementAt",     "(I)V" },
 127 schuur 1.1 /*32*/ { 19,"cInst",         "()I" },
 128            /*33*/ { 13,"<init>",         "(ILjava/lang/String;)V" },
 129            /*34*/ { 13,"getCode",        "()I" },
 130            /*35*/ { 12,"<init>",         "(I)V" },
 131            };
 132            
 133            const METHOD_STRUCT staticMethodNames[]={
 134                  { 14, "valueOf",      "(J)Ljava/math/BigInteger;" },
 135                  { 23, "load",         "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 136            };
 137            
 138            
 139            static int methodInitDone=0;
 140            
 141            jclass classRefs[sizeof(classNames)/sizeof(char*)];
 142            jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)];
 143            jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)];
 144            static jclass providerClassRef;
 145            
 146            jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) {
 147              jclass localRefCls=env->FindClass(name);
 148 schuur 1.1 //  if (env->ExceptionOccurred())
 149            //  env->ExceptionDescribe();
 150              if (localRefCls==NULL) return JNI_FALSE;
 151              jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
 152              env->DeleteLocalRef(localRefCls);
 153              return globalRefCls;
 154            }
 155            
 156            JMPIjvm::JMPIjvm() {
 157               initJVM();
 158            }
 159            
 160            JMPIjvm::~JMPIjvm() {
 161              
 162            }
 163            
 164            int JMPIjvm::cacheIDs(JNIEnv *env) {
 165               if (methodInitDone==1) return JNI_TRUE;
 166               if (methodInitDone==-1) return JNI_FALSE;
 167            
 168               methodInitDone=-1;
 169 schuur 1.1    for (unsigned i=0; i<(sizeof(classNames)/sizeof(char*)); i++) {
 170            //      cerr<<"--- Trying "<< classNames[i]<<endl;
 171                  if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL) return JNI_FALSE; 
 172               }
 173              
 174               for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)); j++) {
 175            //      cerr<<"--- Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<endl;
 176                  if ((instanceMethodIDs[j]=env->GetMethodID( 
 177                       classRefs[instanceMethodNames[j].clsIndex],
 178                       instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL) return 0;
 179                  if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL)
 180                     return 0;
 181               }
 182            
 183               for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)); k++) {
 184            //      cerr<<"--- Trying "<<k<<endl;
 185                  if ((staticMethodIDs[k]=env->GetStaticMethodID( 
 186                      classRefs[staticMethodNames[k].clsIndex],
 187                      staticMethodNames[k].methodName,staticMethodNames[k].signature))==NULL) return 0;
 188               }
 189            //   cerr<<"--- cacheIDs() done"<<endl;
 190 schuur 1.1    methodInitDone=1;
 191               return JNI_TRUE;
 192            }
 193            
 194            static void throwCIMException(JNIEnv *env,char *e) {
 195               env->ThrowNew(classRefs[13],e);
 196            }
 197            
 198            int JMPIjvm::initJVM()
 199            {
 200               JavaVMInitArgs vm_args;
 201               JavaVMOption options[1];
 202               jint res;
 203               char *envcp;
 204               char classpath[1024]="-Djava.class.path=";
 205               JNIEnv *env;
 206            
 207               std::cerr<<"--- JPIjvm::initJVM()\n";
 208               jv.initRc=0;
 209            
 210               envcp=getenv("CLASSPATH");
 211 schuur 1.1    if (envcp==NULL) {
 212                  jv.initRc=1;
 213                  std::cerr<<"--- jmpiJvm::initJVM(): No PEGASUS_PROVIDER_CLASSPATH environment variable found\n";
 214                  return -1;
 215               }
 216            
 217               strcat(classpath,envcp);
 218               options[0].optionString=classpath;
 219               vm_args.version=0x00010002;
 220               vm_args.options=options;
 221               vm_args.nOptions=1;
 222               vm_args.ignoreUnrecognized=JNI_TRUE;
 223            
 224               res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 225               if (res!=0) {
 226                  fprintf(stderr,"Can not create Java VM\n");
 227                  exit(1);
 228               }
 229               jv.jvm=jvm;
 230               jv.env=env;
 231            
 232 schuur 1.1    if (cacheIDs(env)==1) {
 233                  jv.classRefs=classRefs;
 234                  jv.instMethodIDs=instanceMethodIDs;
 235            //      jv.classMethodIDs=classMethodIDs;
 236               }
 237            
 238               if (env->ExceptionOccurred()) {
 239                  env->ExceptionDescribe();
 240                  exit(1);
 241               }
 242            
 243            //   dlopen("libjmpiVM.so",RTLD_NOW);
 244            //   std::cerr<<"--- JPIjvm::initJVM(): selfloading done\n";
 245            
 246               return res;
 247            }
 248            
 249            JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) {
 250               JNIEnv* env;
 251               if (jvm==NULL) initJVM();
 252               jvm->AttachCurrentThread((void**)&env,NULL);
 253 schuur 1.1    *jvp=&jv;
 254               return env;
 255            }
 256            
 257            void JMPIjvm::detachThread() {
 258               jvm->DetachCurrentThread();
 259            }
 260            
 261            jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
 262                 const char *cn, jclass *cls)
 263            {
 264               static jobject gProv=NULL;
 265               static jclass scls=NULL;
 266               if (gProv) {
 267                  *cls=scls;
 268                  return gProv;
 269               }
 270            
 271               /*
 272               std::cout<<"--- jar: "<<jar<<std::endl;
 273               std::cout<<"--- cln: "<<cln<<std::endl;
 274 schuur 1.1 
 275               jstring jjar=env->NewStringUTF((const char*)jar.getCString());
 276               jstring jcln=env->NewStringUTF((const char*)cln.getCString());
 277            
 278               jclass jcls=(jclass)env->CallStaticObjectMethod(classRefs[23],staticMethodIDs[1],
 279                  jjar,jcln);
 280               if (env->ExceptionCheck()) {
 281                  env->ExceptionDescribe();
 282                  std::cerr<<"--- Unable to instantiate provider "<<cn<<std::endl;
 283             //     return NULL;
 284               }
 285            */
 286            
 287               scls=getGlobalClassRef(env,(const char*)cln.getCString());
 288               if (env->ExceptionCheck()) {
 289                  std::cerr<<"--- Provider "<<cn<<" not found"<<std::endl;
 290                  return NULL;
 291               }
 292            	*cls=scls;
 293            
 294               jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 295 schuur 1.1    jobject lProv=env->NewObject(*cls,id);
 296               gProv=(jobject)env->NewGlobalRef(lProv);
 297               if (env->ExceptionCheck()) {
 298                  std::cerr<<"--- Unable to instantiate provider "<<cn<<std::endl;
 299                  return NULL;
 300               }
 301               return gProv;
 302            }
 303            
 304            jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
 305            {
 306               static jobject gProv=NULL;
 307               static jclass scls=NULL;
 308               if (gProv) {
 309                  *cls=scls;
 310                  return gProv;
 311               }
 312            
 313               scls=getGlobalClassRef(env,cn);
 314               if (env->ExceptionCheck()) {
 315                  std::cerr<<"--- Provider "<<cn<<" not found"<<std::endl;
 316 schuur 1.1       return NULL;
 317               }
 318            	*cls=scls;
 319            
 320               jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 321               jobject lProv=env->NewObject(*cls,id);
 322               gProv=(jobject)env->NewGlobalRef(lProv);
 323               if (env->ExceptionCheck()) {
 324                  std::cerr<<"--- Unable to instantiate provider "<<cn<<std::endl;
 325                  return NULL;
 326               }
 327               return gProv;
 328            }
 329            
 330            void JMPIjvm::checkException(JNIEnv *env)
 331            {
 332               jstring msg=NULL,id=NULL;
 333               int code;
 334               const char *cp;
 335               char hcp[512]="",hcp1[128];
 336               String m=String::EMPTY;
 337 schuur 1.1 
 338               if (env->ExceptionCheck()) {
 339                  jthrowable err=env->ExceptionOccurred();
 340            //      env->ExceptionDescribe();
 341                  env->ExceptionClear();
 342                  if (err) {
 343                     msg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
 344                     code=(int)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
 345                     id=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
 346                     if (id) {
 347                        const char *cp=env->GetStringUTFChars(id,NULL);
 348                        strncpy(hcp1,cp,511);
 349                        env->ReleaseStringUTFChars(id,cp);
 350                     }
 351            
 352                     if (msg) {
 353                        const char *cp=env->GetStringUTFChars(msg,NULL);
 354                        strncpy(hcp,cp,511);
 355                        env->ReleaseStringUTFChars(msg,cp);
 356                        m=String(hcp);
 357            	      }
 358 schuur 1.1 //	      std::cerr<<"--- exception: "<<hcp1<<" ("<<hcp<<") "<<std::endl;
 359                     throw CIMException((CIMStatusCode)code,m);
 360                  }
 361               }
 362            } 
 363            
 364            /**************************************************************************
 365             * name         - NewPlatformString
 366             * description  - Returns a new Java string object for the specified
 367             *                platform string.
 368             * parameters   - env
 369             *                s     Platform encoded string
 370             * returns      - Java string object pointer or null (0)
 371             **************************************************************************/
 372            jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
 373            {
 374                size_t len = strlen(s);
 375                jclass cls;
 376                jmethodID mid;
 377                jbyteArray ary;
 378            
 379 schuur 1.1     NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
 380                NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
 381                ary = (*env).NewByteArray((jsize)len);
 382                if (ary != 0) {
 383                    jstring str = 0;
 384                    (*env).SetByteArrayRegion(ary, 0, (jsize)len,
 385                                               (jbyte *)s);
 386                    if (!(*env).ExceptionOccurred()) {
 387                        str = (jstring)(*env).NewObject(cls, mid, ary);
 388                    }
 389                    (*env).DeleteLocalRef(ary);
 390                    return str;
 391                }
 392                return 0;
 393            }
 394            
 395            
 396            /**************************************************************************
 397             * name         - NewPlatformStringArray
 398             * description  - Returns a new array of Java string objects for the specified
 399             *                array of platform strings.
 400 schuur 1.1  * parameters   - env
 401             *                strv      Platform encoded string array
 402             *                strc      Number of strings in strv
 403             * returns      - Java string array object pointer
 404             **************************************************************************/
 405            jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
 406            {
 407                jarray cls;
 408                jarray ary;
 409                int i;
 410            
 411                NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
 412                NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
 413                for (i = 0; i < strc; i++) {
 414                    jstring str = NewPlatformString(env, *strv++);
 415                    NULL_CHECK0(str);
 416                    (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
 417                    (*env).DeleteLocalRef(str);
 418                }
 419                return (jobjectArray)ary;
 420            }
 421 schuur 1.1 
 422            
 423            
 424            
 425            
 426            extern "C" {
 427            
 428            
 429            void throwCimException(JNIEnv *jEnv, CIMException & e) {
 430                  JMPIjvm::cacheIDs(jEnv);
 431                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],(jint)e.getCode());
 432                  jEnv->Throw((jthrowable)ev);
 433            }
 434            
 435            void throwFailedException(JNIEnv *jEnv) {
 436                  JMPIjvm::cacheIDs(jEnv);
 437                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],1);
 438                  jEnv->Throw((jthrowable)ev);
 439            }
 440            
 441            void throwNotSupportedException(JNIEnv *jEnv) {
 442 schuur 1.1       JMPIjvm::cacheIDs(jEnv);
 443                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],7);
 444                  jEnv->Throw((jthrowable)ev);
 445            }
 446            
 447            
 448            // -------------------------------------
 449            // ---
 450            // -		CIMOMHandle
 451            // ---
 452            // -------------------------------------
 453            
 454            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
 455              (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo) {
 456               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 457               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 458               OperationContext ctx;
 459               try {
 460                  CIMClass cc=ch->getClass(ctx,cop->getNameSpace(),cop->getClassName(),
 461                     (Boolean)lo,
 462                     true,true,CIMPropertyList());
 463 schuur 1.1       return (jint)new CIMClass(cc);
 464               }
 465               Catch(jEnv);
 466               return 0;
 467            }
 468            
 469            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumClass
 470              (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jobject jVec) {
 471               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 472               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 473               OperationContext ctx;
 474               try {
 475                  Array<CIMClass> en=ch->enumerateClasses(ctx,cop->getNameSpace(),cop->getClassName(),
 476                     true,(Boolean)lo,true,true);
 477                  if (!cop->getClassName().isNull())
 478                     en.append(ch->getClass(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
 479                        true,true,CIMPropertyList()));
 480                  for (int i=0,m=en.size(); i<m; i++) {
 481                     CIMClass *cls=new CIMClass(en[i]);
 482                     jobject jCls=jEnv->NewObject(classRefs[17],instanceMethodIDs[19],(jint)cls);
 483                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],jCls);
 484 schuur 1.1       }
 485                  return;
 486               }
 487               Catch(jEnv);
 488               return;
 489            }
 490            
 491            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
 492               (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN) {
 493            
 494               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 495               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 496               OperationContext ctx;
 497               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 498               
 499               try {
 500                  CIMName prop(str);
 501                  CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
 502                  jEnv->ReleaseStringUTFChars(jN,str);
 503                  return (jint)(void*)cv;
 504               }
 505 schuur 1.1    Catch(jEnv);
 506               return -1;
 507            }
 508            
 509            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
 510               (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) {
 511            
 512               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 513               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 514               OperationContext ctx;
 515               
 516               try {
 517                  ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
 518               }
 519               Catch(jEnv);
 520            }
 521            
 522            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumInstances
 523            (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean jDeep, jboolean jLocalOnly, jobject jVec) {
 524            
 525               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 526 schuur 1.1    CIMObjectPath *cop=(CIMObjectPath*)jCop;
 527               OperationContext ctx;
 528               
 529               try {
 530                  Array<CIMInstance> inst=ch->enumerateInstances(ctx,cop->getNameSpace(),cop->getClassName(),
 531                      (Boolean)jDeep,(Boolean)jLocalOnly,true,true,CIMPropertyList());
 532                  for (int i=0,s=inst.size(); i<s; i++){
 533                     CIMInstance *ci=new CIMInstance(inst[i]);
 534                     jobject jCi=jEnv->NewObject(classRefs[18],instanceMethodIDs[20],(jint)ci);
 535                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],jCi);
 536                  }
 537               }
 538               Catch(jEnv);
 539            }
 540            
 541            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
 542            (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean jLocalOnly) {
 543            
 544               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 545               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 546               OperationContext ctx;
 547 schuur 1.1    
 548               try {
 549                  CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,cop->getNameSpace(),*cop,
 550                      (Boolean)jLocalOnly,false,false,CIMPropertyList()));
 551                  return (jint)(void*)inst;
 552               }
 553               Catch(jEnv);
 554               return -1;
 555            }
 556            
 557            
 558            
 559            // -------------------------------------
 560            // ---
 561            // -		CIMClass
 562            // ---
 563            // -------------------------------------
 564            
 565            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
 566              (JNIEnv *jEnv, jobject jThs, jint jCls) {
 567               CIMClass *cls=(CIMClass*)jCls;
 568 schuur 1.1 //      Array<Sint8> ar;
 569            //      cls->toXml(ar);
 570            //      cout<<"--- class: "<<ar.getData()<<endl;
 571            
 572               try {
 573                  CIMInstance *ci=new CIMInstance(cls->getClassName());
 574                  for (int i=0,m=cls->getQualifierCount(); i<m; i++)
 575                     ci->addQualifier(cls->getQualifier(i).clone());
 576                  for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
 577                     CIMProperty cp= cls->getProperty(i);
 578                     ci->addProperty(cp.clone());
 579                   //     CIMProperty(cp.getName(), cp.getValue(), cp.getArraySize(),
 580                   //                 cp.getReferenceClassName(), cp.getClassOrigin()));
 581                     for (int j=0, s=cp.getQualifierCount(); j<s; j++)
 582                        ci->getProperty(i).addQualifier(cp.getQualifier(j));
 583                  }
 584                  return (jint)ci;
 585               }
 586               Catch(jEnv);
 587               return 0;
 588            }
 589 schuur 1.1 
 590            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
 591               (JNIEnv *jEnv, jobject jThs, jint jCls) {
 592               CIMClass *cls=(CIMClass*)jCls;
 593               
 594               try {
 595                  const String &cn=cls->getClassName().getString();
 596                  jstring str=jEnv->NewStringUTF(cn.getCString());
 597                  return str;
 598               }
 599               Catch(jEnv);
 600               return 0;
 601            }
 602            
 603            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
 604               (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 605               CIMClass *cls=(CIMClass*)jCls;
 606               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 607               jint rv=-1;
 608               Uint32 pos=cls->findQualifier(String(str));
 609               if (pos!=PEG_NOT_FOUND)
 610 schuur 1.1       rv=(jint)new CIMQualifier(cls->getQualifier(pos));
 611               jEnv->ReleaseStringUTFChars(jN,str);
 612               return rv;
 613            }
 614            
 615            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
 616                 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 617               CIMClass *cls=(CIMClass*)jCls;
 618               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 619               jint rv=-1;
 620               Uint32 pos=cls->findProperty(CIMName(str));
 621               if (pos!=PEG_NOT_FOUND)
 622                  rv=(jint)new CIMProperty(cls->getProperty(pos));
 623               jEnv->ReleaseStringUTFChars(jN,str);
 624               return rv;
 625            }
 626            
 627            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
 628                 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ) {
 629               CIMClass *cls=(CIMClass*)jCls;
 630               const char *str=jEnv->GetStringUTFChars(jQ,NULL);
 631 schuur 1.1    Uint32 pos=cls->findQualifier(String(str));
 632               jEnv->ReleaseStringUTFChars(jQ,str);
 633               return (jboolean)(pos!=PEG_NOT_FOUND);
 634            }
 635            
 636            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
 637                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
 638               CIMClass *cls=(CIMClass*)jCls;
 639               
 640               for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
 641                  CIMProperty *cp=new CIMProperty(cls->getProperty(i));
 642                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 643                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 644               }
 645               return jVec;
 646            }
 647            
 648            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
 649                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
 650               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 651               CIMClass *cls = new CIMClass(CIMName(str), CIMName());
 652 schuur 1.1    jEnv->ReleaseStringUTFChars(jN,str);
 653               return (jint)(void*)cls;
 654            }
 655            
 656            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
 657                  (JNIEnv *jEnv, jobject jThs, jint jCls) {
 658               CIMClass *cls =(CIMClass *)jCls;
 659               const String &cn=cls->getSuperClassName().getString();
 660               jstring str=jEnv->NewStringUTF(cn.getCString());
 661               return str;
 662            }
 663            
 664            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
 665                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec){
 666               CIMClass *cls=(CIMClass*)jCls;
 667               if (cls->hasKeys()) {
 668                  Array<CIMName> keyNames;
 669                  cls->getKeyNames(keyNames);
 670                  for(int i=0, s=keyNames.size();i<s;i++){
 671                     Uint32 pos=cls->findProperty(keyNames[i]);
 672                     if (pos!=PEG_NOT_FOUND){
 673 schuur 1.1             CIMProperty *cp=new CIMProperty(cls->getProperty(pos));
 674                        jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 675                        jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 676                     }
 677                  }
 678               }
 679               return jVec;
 680            }
 681            
 682            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
 683                  (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 684               CIMClass *cls=(CIMClass*)jCls;
 685               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 686               jint rv=-1;
 687               Uint32 pos=cls->findMethod(String(str));
 688               if (pos!=PEG_NOT_FOUND) {
 689                  rv=(jint)new CIMMethod(cls->getMethod(pos));
 690               }
 691               jEnv->ReleaseStringUTFChars(jN,str);
 692               return rv;
 693            }
 694 schuur 1.1 
 695            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
 696                  (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared) {
 697               CIMClass *cls = (CIMClass*)jCls;
 698               CIMClass *clsToBeCompared = (CIMClass*)jClsToBeCompared;
 699               return cls->identical(*clsToBeCompared);
 700            }
 701            
 702            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
 703                 (JNIEnv *jEnv, jobject jThs, jint jCls) {
 704               CIMClass *cls=(CIMClass*)jCls;
 705               delete cls;
 706            }
 707            
 708            
 709            
 710            // -------------------------------------
 711            // ---
 712            // -		CIMInstance
 713            // ---
 714            
 715 schuur 1.1 // -------------------------------------
 716            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
 717                  (JNIEnv *jEnv, jobject jThs) {
 718               return (jint)new CIMInstance();
 719            }
 720            
 721            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
 722                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
 723               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 724               return (jint)new CIMInstance(CIMName(str));
 725            }
 726            
 727            //Added by Andy Viciu
 728            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
 729                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 730               CIMInstance *ci=(CIMInstance*)jInst;
 731               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 732               /* NOT SUPPORTED AND NOT NEEDED*/
 733            }
 734            
 735            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
 736 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV) {
 737               CIMInstance *ci=(CIMInstance*)jInst;
 738               CIMValue *cv=(CIMValue*)jV;
 739               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 740               Uint32 pos=ci->findProperty(CIMName(str));
 741            
 742               if (pos!=PEG_NOT_FOUND) {
 743                  CIMProperty cp=ci->getProperty(pos);
 744                 if (cp.getType()==cv->getType())
 745                     cp.setValue(*cv);
 746                 else {
 747                     throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
 748                     cerr<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")";
 749                  }
 750               }
 751               else {
 752                  CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
 753                  ci->addProperty(*cp);
 754                  //throw CIMException(CIM_ERR_FAILED, String(str).append(String(" - Property not found")));
 755               }
 756            
 757 schuur 1.1    jEnv->ReleaseStringUTFChars(jN,str);
 758            }
 759            
 760            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
 761                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 762               CIMInstance *ci=(CIMInstance*)jInst;
 763               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 764               jint rv=-1;
 765               try {
 766                  Uint32 pos=ci->findProperty(CIMName(str));
 767                  if (pos!=PEG_NOT_FOUND) {
 768                     CIMProperty *cp=new CIMProperty(ci->getProperty(pos));
 769                     rv=(jint)cp;
 770                  }
 771               }
 772               Catch(jEnv);
 773               jEnv->ReleaseStringUTFChars(jN,str);
 774               return rv;
 775            }
 776            
 777            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
 778 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
 779               CIMInstance *ci=(CIMInstance*)jInst;
 780               
 781               for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
 782                  if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
 783                     CIMProperty *cp=new CIMProperty(ci->getProperty(i));
 784                     jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 785                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 786                  }
 787               }
 788            
 789               return jVec;
 790            }
 791            
 792            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
 793                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 794               CIMInstance *ci=(CIMInstance*)jInst;
 795               const String &cn=ci->getClassName().getString();
 796               jstring str=jEnv->NewStringUTF(cn.getCString());
 797               return str;
 798            }
 799 schuur 1.1 
 800            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
 801                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 802               CIMInstance *ci=(CIMInstance*)jInst;
 803               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 804               jint rv=-1;
 805               Uint32 pos=ci->findQualifier(String(str));
 806               if (pos!=PEG_NOT_FOUND) {
 807                  rv=(jint)new CIMQualifier(ci->getQualifier(pos));
 808               }
 809               jEnv->ReleaseStringUTFChars(jN,str);
 810               return rv;
 811            }
 812            
 813            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
 814                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 815               CIMInstance *ci=(CIMInstance *)jInst;
 816               CIMInstance* cl=new CIMInstance(ci->clone());
 817               return (jint)(void*)cl;
 818            }
 819            
 820 schuur 1.1 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
 821                  (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
 822               CIMInstance *ci=(CIMInstance*)jInst;
 823               for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
 824                  CIMProperty *cp=new CIMProperty(ci->getProperty(i));
 825                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 826                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 827               }
 828               return jVec;
 829            }
 830            
 831            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
 832                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 833               CIMInstance *ci=(CIMInstance*)jInst;
 834               delete ci;
 835            }
 836            
 837            
 838            // -------------------------------------
 839            // ---
 840            // -		CIMObjectPath
 841 schuur 1.1 // ---
 842            // -------------------------------------
 843            
 844            CIMObjectPath* construct() {
 845               CIMObjectPath *cop=new CIMObjectPath();
 846               _nameSpace n;
 847               cop->setNameSpace(n.nameSpace());
 848               cop->setHost(n.hostName());
 849               return cop;
 850            }
 851            
 852            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
 853                  (JNIEnv *jEnv, jobject jThs) {
 854               return (jint)construct();
 855            }
 856            
 857            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
 858                  (JNIEnv *jEnv, jobject jThs, jstring jCn) {
 859               CIMObjectPath *cop=construct();
 860               const char *str=jEnv->GetStringUTFChars(jCn,NULL);
 861               if (str) cop->setClassName(str);
 862 schuur 1.1    jEnv->ReleaseStringUTFChars(jCn,str);
 863               return (jint)(void*)cop;
 864            }
 865            
 866            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
 867                  (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs) {
 868               CIMObjectPath *cop=construct();
 869            
 870               const char *str1=jEnv->GetStringUTFChars(jCn,NULL);
 871               const char *str2=jEnv->GetStringUTFChars(jNs,NULL);
 872               try {
 873                  if (str1) cop->setClassName(str1);
 874                  if (str2) cop->setNameSpace(str2);
 875               }
 876               catch (Exception e) {
 877                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[33],(jint)1,jEnv->NewStringUTF(e.getMessage().getCString()));
 878                  jEnv->Throw((jthrowable)ev);
 879               }
 880            
 881               jEnv->ReleaseStringUTFChars(jCn,str1);
 882               jEnv->ReleaseStringUTFChars(jNs,str2);
 883 schuur 1.1    return (jint)(void*)cop;
 884            }
 885            
 886            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
 887                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 888               CIMInstance *ci = (CIMInstance *)jInst;
 889               CIMObjectPath *cop=new CIMObjectPath(ci->getPath());
 890               _nameSpace n;
 891               if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
 892               if (cop->getHost()==NULL) cop->setHost(n.hostName());
 893               return (jint)(void*)cop;
 894            }
 895            
 896            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
 897                  (JNIEnv *jEnv, jobject jThs, jint jCop) {
 898               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 899               delete cop;
 900            }
 901            
 902            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
 903                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
 904 schuur 1.1    CIMObjectPath *cop=(CIMObjectPath*)jOp;
 905               const String &hn=cop->getHost();
 906               jstring str=jEnv->NewStringUTF(hn.getCString());
 907               return str;
 908            }
 909            
 910            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
 911                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
 912               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 913               const char *str=jEnv->GetStringUTFChars(jName,NULL);
 914               cop->setHost(String(str));
 915               jEnv->ReleaseStringUTFChars(jName,str);
 916            }
 917            
 918            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
 919                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
 920               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 921               const String &cn=cop->getClassName().getString();
 922               jstring str=jEnv->NewStringUTF(cn.getCString());
 923               return str;
 924            }
 925 schuur 1.1 
 926            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
 927                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
 928               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 929               const char *str=jEnv->GetStringUTFChars(jName,NULL);
 930               cop->setClassName(String(str));
 931               jEnv->ReleaseStringUTFChars(jName,str);
 932            }
 933            
 934            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
 935                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
 936               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 937               const String &ns=cop->getNameSpace().getString();
 938               jstring str=jEnv->NewStringUTF(ns.getCString());
 939               return str;
 940            }
 941            
 942            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
 943                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
 944               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 945               const char *str=jEnv->GetStringUTFChars(jName,NULL);
 946 schuur 1.1    cop->setNameSpace(CIMNamespaceName(str));
 947               jEnv->ReleaseStringUTFChars(jName,str);
 948            }
 949            
 950            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
 951                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jId, jint jVal) {
 952               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 953               const char *str=jEnv->GetStringUTFChars(jId,NULL);
 954               CIMValue *cv=(CIMValue*)jVal;
 955               Array<CIMKeyBinding> keyBindings=cop->getKeyBindings();
 956               keyBindings.append(CIMKeyBinding(str,*cv));
 957               cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
 958               jEnv->ReleaseStringUTFChars(jId,str);
 959               return;
 960            }
 961            
 962            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
 963                  (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
 964               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 965               const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
 966            
 967 schuur 1.1    for (Uint32 i=0,s=akb.size(); i<s; i++) {
 968                  const String &n=akb[i].getName().getString();
 969                  const String &v=akb[i].getValue();
 970                  CIMKeyBinding::Type t=akb[i].getType();
 971                  CIMValue *cv;
 972                  switch (t) {
 973                  case CIMKeyBinding::NUMERIC:
 974                     cv=new CIMValue((Sint32)atol(v.getCString()));
 975                     break;
 976                  case CIMKeyBinding::STRING:
 977                     cv=new CIMValue(v);
 978                     break;
 979                  case CIMKeyBinding::BOOLEAN:
 980                     cv=new CIMValue((Boolean)(v.getCString()));
 981                     break;
 982                  case CIMKeyBinding::REFERENCE:
 983                     cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
 984                     break;
 985                  default:
 986                     throwCIMException(jEnv,"+++ unsupported type: ");
 987                  }
 988 schuur 1.1       
 989                  CIMProperty *cp;
 990                  if(t!=CIMKeyBinding::REFERENCE)
 991                     cp=new CIMProperty(n,*cv);
 992                  else cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
 993            
 994                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 995                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 996               }
 997               return jVec;
 998            }
 999            
1000            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
1001                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jStr) {
1002               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1003               const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
1004               const char *strKeyName=jEnv->GetStringUTFChars(jStr,NULL);
1005               jstring retStr=NULL;
1006               for (Uint32 i=0,s=akb.size(); i<s; i++) {
1007                  const String &n=akb[i].getName().getString();
1008                  if (n==String(strKeyName)) {
1009 schuur 1.1          retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
1010                     break;
1011                  }
1012               }
1013               jEnv->ReleaseStringUTFChars(jStr,strKeyName);
1014               return retStr;
1015            }
1016            
1017            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
1018                  (JNIEnv *jEnv, jobject jThs, jstring jStr) {
1019               const char *strCop=jEnv->GetStringUTFChars(jStr,NULL);
1020               CIMObjectPath *cop=new CIMObjectPath();
1021               cop->set(String(strCop));
1022               jEnv->ReleaseStringUTFChars(jStr,strCop);
1023               return (jint)cop;
1024            }
1025            
1026            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
1027                  (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
1028               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1029               Array<CIMKeyBinding> akb;
1030 schuur 1.1    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
1031                  jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
1032                  CIMProperty *cp=(CIMProperty*)jEnv->CallIntMethod(o,JMPIjvm::jv.PropertyCInst);
1033                  akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
1034               }
1035               cop->setKeyBindings(akb);
1036            }
1037            
1038            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
1039                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1040               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1041               CIMObjectPath *copl=new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
1042               return (jint)(void*)copl;
1043            }
1044            
1045            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
1046                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1047               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1048               const String &ns=cop->toString();
1049               jstring str=jEnv->NewStringUTF(ns.getCString());
1050               return str;
1051 schuur 1.1 }
1052            
1053            
1054            // -------------------------------------
1055            // ---
1056            // -		CIMDataType
1057            // ---
1058            // -------------------------------------
1059            
1060            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
1061              (JNIEnv *jEnv, jobject jThs, jint type) {
1062              return (jint)(void*) new _dataType(type);
1063            }
1064            
1065            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
1066              (JNIEnv *jEnv, jobject jThs, jint type, jint size) {
1067              return (jint)(void*) new _dataType(type,size);
1068            }
1069            
1070            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
1071              (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef) {
1072 schuur 1.1    const char *ref=jEnv->GetStringUTFChars(jRef,NULL);
1073               jint cInst=(jint)(void*)new _dataType(type,String(ref));
1074               jEnv->ReleaseStringUTFChars(jRef,ref);
1075               return cInst;
1076            }
1077            
1078            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
1079              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1080               _dataType *dt=(_dataType*)jDt;
1081               return dt->_array==true;
1082            }
1083            
1084            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
1085              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1086               _dataType *dt=(_dataType*)jDt;
1087               return dt->_reference==true;
1088            }
1089            
1090            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
1091              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1092               _dataType *dt=(_dataType*)jDt;
1093 schuur 1.1    return dt->_reference==true;
1094            }
1095            
1096            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
1097              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1098               _dataType *dt=(_dataType*)jDt;
1099               return dt->_type;
1100            }
1101            
1102            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
1103              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1104               _dataType *dt=(_dataType*)jDt;
1105               return dt->_size;
1106            }
1107            
1108            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
1109              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1110               _dataType *dt=(_dataType*)jDt;
1111               jstring str=jEnv->NewStringUTF(dt->_refClass.getCString());
1112               return str;
1113            }
1114 schuur 1.1 
1115            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
1116              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1117               _dataType *dt=(_dataType*)jDt;
1118               jstring str=NULL;
1119               if (dt->_type & 0x10) {
1120                  char tmp[32];
1121                  strcpy(tmp,jTypeToChars[dt->_type-0x10]);
1122                  strcat(tmp,"[]");
1123                  str=jEnv->NewStringUTF(tmp);
1124               } 
1125               else if (dt->_type & 0x20) {
1126                  String tmp=dt->_refClass+" REF";
1127                  str=jEnv->NewStringUTF(tmp.getCString());
1128               }  
1129               else {
1130                  str=jEnv->NewStringUTF(jTypeToChars[dt->_type]);
1131               }
1132               return str;
1133            }
1134            
1135 schuur 1.1 
1136            
1137            // -------------------------------------
1138            // ---
1139            // -		CIMProperty
1140            // ---
1141            // -------------------------------------
1142            
1143            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
1144                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1145               CIMProperty *cp=(CIMProperty*)jP;
1146               CIMValue *cv=new CIMValue(cp->getValue());
1147               return (jint)cv;
1148            }
1149            
1150            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
1151                  (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
1152               try {
1153                  CIMValue *cv=(CIMValue*)jV;
1154                  const char *str=jEnv->GetStringUTFChars(jN,NULL);
1155                  CIMProperty *cp;
1156 schuur 1.1 
1157                  if (cv->getType()!=CIMTYPE_REFERENCE)
1158                     cp=new CIMProperty(String(str),*cv);
1159                  else {
1160                     if (!cv->isArray()) {
1161                        CIMObjectPath cop;
1162                        cv->get(cop);
1163                        cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
1164                     }
1165                     else {
1166                        throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
1167                     }
1168                  }
1169            
1170                  jEnv->ReleaseStringUTFChars(jN,str);
1171                  return (jint)cp;
1172               }
1173               Catch(jEnv);
1174               return -1;
1175            }
1176            
1177 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
1178                  (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) {
1179               CIMProperty *cp=(CIMProperty*)jP;
1180               CIMValue *cv=(CIMValue*)jV;
1181               cp->setValue(*cv);
1182            }
1183            
1184            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
1185                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1186               CIMProperty *cp=(CIMProperty*)jP;
1187               return (jboolean)cp->isArray();
1188            }
1189            
1190            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
1191                  (JNIEnv *jEnv, jobject jThs, jint jP, jint jV) {
1192               CIMProperty *cp=(CIMProperty*)jP;
1193               CIMValue *cvin=(CIMValue*)jV;
1194               CIMValue cv=cp->getValue();
1195               if (cvin->isNull())
1196                  throwCIMException(jEnv,"+++ null cvin value ");
1197               if (!cv.isArray())
1198 schuur 1.1       throwCIMException(jEnv,"+++ not an array ");
1199               if (cvin->getType()!=cv.getType())
1200                  throwCIMException(jEnv,"+++ type mismatch ");
1201               CIMType type=cv.getType();
1202               switch (type) {
1203               case CIMTYPE_BOOLEAN: {
1204                     Boolean bo;
1205                     cvin->get(bo);
1206                     Array<Boolean> boarr;
1207                     cv.get(boarr);
1208                     boarr.append(bo);
1209                  }
1210                  break;
1211               case CIMTYPE_UINT8: {
1212                     Uint8 u8;
1213                     cvin->get(u8);
1214                     Array<Uint8> u8arr;
1215                     cv.get(u8arr);
1216                     u8arr.append(u8);
1217                  }
1218                  break;
1219 schuur 1.1    case CIMTYPE_SINT8: {
1220                     Sint8 s8;
1221                     cvin->get(s8);
1222                     Array<Sint8> s8arr;
1223                     cv.get(s8arr);
1224                     s8arr.append(s8);
1225                  }
1226                  break;
1227               case CIMTYPE_UINT16: {
1228                     Uint16 u16;
1229                     cvin->get(u16);
1230                     Array<Uint16> u16arr;
1231                     cv.get(u16arr);
1232                     u16arr.append(u16);
1233                  }
1234                  break;
1235               case CIMTYPE_SINT16: {
1236                     Sint16 s16;
1237                     cvin->get(s16);
1238                     Array<Sint16> s16arr;
1239                     cv.get(s16arr);
1240 schuur 1.1          s16arr.append(s16);
1241                  }
1242                  break;
1243               case CIMTYPE_UINT32: {
1244                     Uint32 u32;
1245                     cvin->get(u32);
1246                     Array<Uint32> u32arr;
1247                     cv.get(u32arr);
1248                     u32arr.append(u32);
1249                  }
1250                  break;
1251               case CIMTYPE_SINT32: {
1252                     Sint32 s32;
1253                     cvin->get(s32);
1254                     Array<Sint32> s32arr;
1255                     cv.get(s32arr);
1256                     s32arr.append(s32);
1257                  }
1258                  break;
1259               case CIMTYPE_UINT64: {
1260                     Uint64 u64;
1261 schuur 1.1          cvin->get(u64);
1262                     Array<Uint64> u64arr;
1263                     cv.get(u64arr);
1264                     u64arr.append(u64);
1265                  }
1266                  break;
1267               case CIMTYPE_SINT64: {
1268                     Sint64 s64;
1269                     cvin->get(s64);
1270                     Array<Sint64> s64arr;
1271                     cv.get(s64arr);
1272                     s64arr.append(s64);
1273                  }
1274                  break;
1275               case CIMTYPE_REAL32: {
1276                     Real32 f;
1277                     cvin->get(f);
1278                     Array<Real32> farr;
1279                     cv.get(farr);
1280                     farr.append(f);
1281                  }
1282 schuur 1.1       break;
1283               case CIMTYPE_REAL64: {
1284                     Real64 d;
1285                     cvin->get(d);
1286                     Array<Real64> darr;
1287                     cv.get(darr);
1288                     darr.append(d);
1289                  }
1290                  break;
1291               case CIMTYPE_STRING: {
1292                     String str;
1293                     cvin->get(str);
1294                     Array<String> strarr;
1295                     cv.get(strarr);
1296                     strarr.append(str);
1297                  }
1298                  break;
1299               case CIMTYPE_REFERENCE: {
1300                     CIMObjectPath ref;
1301                     cvin->get(ref);
1302                     Array<CIMObjectPath> refarr;
1303 schuur 1.1          cv.get(refarr);
1304                     refarr.append(ref);
1305                  }
1306                  break;
1307               default:
1308                  throwCIMException(jEnv,"+++ unsupported type ");
1309               }
1310            }
1311            
1312            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
1313                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1314               CIMProperty *cp=(CIMProperty*)jP;
1315               const String &n=cp->getName().getString();
1316               jstring str=jEnv->NewStringUTF(n.getCString());
1317               return str;
1318            }
1319            
1320            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
1321                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1322               CIMProperty *cp=(CIMProperty*)jP;
1323               return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
1324 schuur 1.1 }
1325            
1326            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
1327                 (JNIEnv *jEnv, jobject jThs, jint jP) {
1328               CIMProperty *cp=(CIMProperty*)jP;
1329               const String &n=cp->getReferenceClassName().getString();
1330               jstring str=jEnv->NewStringUTF(n.getCString());
1331               return str;
1332            }
1333            
1334            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
1335                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1336               CIMProperty *cp=(CIMProperty*)jP;
1337               String ref=cp->getReferenceClassName().getString();
1338               _dataType *type=new _dataType(pTypeToJType[cp->getType()],
1339                    cp->getArraySize(),
1340                    ref.size() ? true : false,
1341                    false,
1342                    cp->isArray(),
1343                    ref,
1344                    true);
1345 schuur 1.1    return (jint)type;
1346            }
1347            
1348            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
1349                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1350               CIMProperty *cp=(CIMProperty*)jP;
1351               const String &n=cp->getName().getString();
1352               jstring str=jEnv->NewStringUTF(n.getCString());
1353               return str;
1354            }
1355            
1356            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
1357                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1358               CIMProperty *cp=(CIMProperty*)jP;
1359               delete cp;
1360            }
1361               
1362            
1363            
1364            // -------------------------------------
1365            // ---
1366 schuur 1.1 // -     CIMQualifier
1367            // ---
1368            // -------------------------------------
1369            
1370            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
1371                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1372               CIMQualifier *cq=(CIMQualifier*)jQ;
1373               delete cq;
1374            }
1375            
1376            
1377            // -------------------------------------
1378            // ---
1379            // -		CIMDateTime
1380            // ---
1381            // -------------------------------------
1382            
1383            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
1384                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
1385               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1386               CIMDateTime *dt;
1387 schuur 1.1    if (strlen(str)==0)
1388                  dt=new CIMDateTime();
1389               else
1390                  dt=new CIMDateTime(String(str));
1391               jEnv->ReleaseStringUTFChars(jN,str);
1392               return (jint)dt;
1393            }
1394            
1395            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
1396                  (JNIEnv *jEnv, jobject jThs) {
1397               CIMDateTime *dt=new CIMDateTime(CIMDateTime::getCurrentDateTime ());
1398               return (jint)dt;
1399            }
1400            
1401            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
1402                  (JNIEnv *jEnv, jobject jThs, jint jC, jint jD) {
1403               CIMDateTime *ct = (CIMDateTime *) jC;
1404               CIMDateTime *dt = (CIMDateTime *) jD;
1405               return (jboolean)(ct->getDifference(*ct, *dt)>0);
1406            }
1407            
1408 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
1409                  (JNIEnv *jEnv, jobject jThs, jint jDT) {
1410               CIMDateTime *cdt = (CIMDateTime *) jDT;
1411               delete cdt;
1412            }
1413            
1414            
1415            // -------------------------------------
1416            // ---
1417            // -		CIMMethod
1418            // ---
1419            // -------------------------------------
1420            
1421            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
1422                  (JNIEnv *jEnv, jobject jThs, jint jM) {
1423               CIMMethod *cm=(CIMMethod*)jM;
1424               return (jint)cm->getType();
1425            }
1426            
1427            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
1428                  (JNIEnv *jEnv, jobject jThs, jint jM) {
1429 schuur 1.1    CIMMethod *cm=(CIMMethod*)jM;
1430               delete cm;
1431            }
1432            
1433            
1434            // -------------------------------------
1435            // ---
1436            // -		CIMValue
1437            // ---
1438            // -------------------------------------
1439            
1440            
1441            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
1442                  (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned) {
1443               CIMValue *cv=NULL;
1444               if (notSigned) cv=new CIMValue((Uint8)jb);
1445               else cv=new CIMValue((Sint8)jb);
1446               return (jint)cv;
1447            }
1448            
1449            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
1450 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned) {
1451               CIMValue *cv=NULL;
1452               if (notSigned) cv=new CIMValue((Uint16)js);
1453               else cv=new CIMValue((Sint16)js);
1454               return (jint)cv;
1455            }
1456            
1457            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue_makeInt
1458                  (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned) {
1459               CIMValue *cv=NULL;
1460               if (notSigned) cv=new CIMValue((Uint32)ji);
1461               else cv=new CIMValue((Sint32)ji);
1462               return (jint)cv;
1463            }
1464            
1465            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
1466                  (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned) {
1467               CIMValue *cv=NULL;
1468               if (notSigned) cv=new CIMValue((Uint64)jl);
1469               else cv=new CIMValue((Sint64)jl);
1470               return (jint)cv;
1471 schuur 1.1 }
1472            
1473            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
1474                  (JNIEnv *jEnv, jobject jThs, jfloat jF) {
1475               CIMValue *cv=new CIMValue(jF);
1476               return (jint)cv;
1477            }
1478            
1479            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
1480                  (JNIEnv *jEnv, jobject jThs, jdouble jD) {
1481               CIMValue *cv=new CIMValue(jD);
1482               return (jint)cv;
1483            }
1484            
1485            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
1486                  (JNIEnv *jEnv, jobject jThs, jstring jS) {
1487               const char *str=jEnv->GetStringUTFChars(jS,NULL);
1488               CIMValue *cv=new CIMValue(String(str));
1489               jEnv->ReleaseStringUTFChars(jS,str);
1490               return (jint)cv;
1491            }
1492 schuur 1.1 
1493            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1ref
1494                  (JNIEnv *jEnv, jobject jThs, jint jR) {
1495               CIMObjectPath *ref=(CIMObjectPath*)jR;
1496               CIMValue *cv=new CIMValue(*ref);
1497               return (jint)cv;
1498            }
1499            
1500            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
1501                  (JNIEnv *jEnv, jobject jThs, jint jDT) {
1502               CIMDateTime *dt=(CIMDateTime*)jDT;
1503               CIMValue *cv=new CIMValue(*dt);
1504               return (jint)cv;
1505            }
1506            
1507            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
1508                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1509               CIMValue *cv=(CIMValue*)jP;
1510               return (jboolean)cv->isArray();
1511            }
1512            
1513 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
1514                  (JNIEnv *jEnv, jobject jThs, jboolean jB) {
1515               CIMValue *cv=new CIMValue((Boolean)jB);
1516               return (jint)cv;
1517            }
1518            
1519            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
1520                  (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned) {
1521               CIMValue *cv=NULL;
1522               jboolean b;
1523               jsize len=jEnv->GetArrayLength(jshortA);
1524               jshort* jsA=jEnv->GetShortArrayElements(jshortA,&b);
1525               if (notSigned) {
1526                  Array<Uint8> u8;
1527                  for (jsize i=0;i<len;i++)
1528                     u8.append((Uint8)jsA[i]);
1529                  cv=new CIMValue(u8);
1530               }
1531               else {
1532                  Array<Sint8> s8;
1533                  for (jsize i=0;i<len;i++)
1534 schuur 1.1          s8.append((Sint8)jsA[i]);
1535                  cv=new CIMValue(s8);
1536               }
1537               return (jint)(void*)cv;
1538            }
1539            
1540            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
1541                  (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned) {
1542               CIMValue *cv=NULL;
1543               jboolean b;
1544               jsize len=jEnv->GetArrayLength(jintA);
1545               jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
1546               if (notSigned) {
1547                  Array<Uint16> u16;
1548                  for (jsize i=0;i<len;i++)
1549                     u16.append((Uint16)jiA[i]);
1550                  cv=new CIMValue(u16);
1551               }
1552               else {
1553                  Array<Sint16> s16;
1554                  for (jsize i=0;i<len;i++)
1555 schuur 1.1          s16.append((Sint16)jiA[i]);
1556                  cv=new CIMValue(s16);
1557               }
1558               return (jint)(void*)cv;
1559            }
1560            
1561            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
1562                  (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
1563               CIMValue *cv=NULL;
1564               jboolean b;
1565               jsize len=jEnv->GetArrayLength(jlongA);
1566               jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
1567               if (notSigned) {
1568                  Array<Uint32> u32;
1569                  for (jsize i=0;i<len;i++)
1570                     u32.append((Uint32)jlA[i]);
1571                  cv=new CIMValue(u32);
1572               }
1573               else {
1574                  Array<Sint32> s32;
1575                  for (jsize i=0;i<len;i++)
1576 schuur 1.1          s32.append((Sint32)jlA[i]);
1577                  cv=new CIMValue(s32);
1578               }
1579               return (jint)(void*)cv;
1580            }
1581            
1582            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
1583                  (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
1584               CIMValue *cv=NULL;
1585               jboolean b;
1586               jsize len=jEnv->GetArrayLength(jlongA);
1587               jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
1588               if (notSigned) {
1589                  Array<Uint64> u64;
1590                  for (jsize i=0;i<len;i++)
1591                     u64.append((Uint64)jlA[i]);
1592                  cv=new CIMValue(u64);
1593               }
1594               else {
1595                  Array<Sint64> s64;
1596                  for (jsize i=0;i<len;i++)
1597 schuur 1.1          s64.append((Sint64)jlA[i]);
1598                  cv=new CIMValue(s64);
1599               }
1600               return (jint)(void*)cv;
1601            }
1602            
1603            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
1604                  (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA) {
1605               CIMValue *cv=NULL;
1606               jboolean b;
1607               jsize len=jEnv->GetArrayLength(jstringA);
1608               Array<String> strA;
1609            
1610               for (jsize i=0;i<len;i++) {
1611                  jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);
1612                  const char *str=jEnv->GetStringUTFChars(jsA,NULL);
1613                  strA.append(String(str));
1614                  jEnv->ReleaseStringUTFChars(jsA,str);
1615               }
1616            
1617               cv=new CIMValue(strA);
1618 schuur 1.1    return (jint)(void*)cv;
1619            }
1620            
1621            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
1622                  (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA) {
1623               CIMValue *cv=NULL;
1624               jboolean b;
1625               jsize len=jEnv->GetArrayLength(jboolA);
1626               jboolean* jbA=jEnv->GetBooleanArrayElements(jboolA,&b);
1627               Array<Boolean> bA;
1628               for (jsize i=0;i<len;i++)
1629                  bA.append((Boolean)jbA[i]);
1630               cv=new CIMValue(bA);
1631               return (jint)(void*)cv;
1632            }
1633            
1634            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1refArray
1635                  (JNIEnv *jEnv, jobject jThs, jintArray jintA) {
1636               CIMValue *cv=NULL;
1637               jboolean b;
1638               jsize len=jEnv->GetArrayLength(jintA);
1639 schuur 1.1    jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
1640               Array<CIMObjectPath> cA;
1641               for (jsize i=0;i<len;i++)
1642                  cA.append(*((CIMObjectPath*)jiA[i]));
1643               cv=new CIMValue(cA);
1644               return (jint)(void*)cv;
1645            }
1646            
1647            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
1648                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1649               CIMValue *cv=(CIMValue*)jP;
1650               return (jint)cv->getType();
1651            }
1652            
1653            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
1654                  (JNIEnv *jEnv, jobject jThs, jint jV) {
1655               CIMValue *cv=(CIMValue*)jV;
1656               return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
1657            }
1658            
1659            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
1660 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jint jV) {
1661               CIMValue *cv=(CIMValue*)jV;
1662               if (cv->isNull())
1663                  return NULL;
1664               CIMType type=cv->getType();
1665            
1666               if (!cv->isArray()) {
1667                  switch (type) {
1668                  case CIMTYPE_BOOLEAN:
1669                     Boolean bo;
1670                     cv->get(bo);
1671                     return jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo);
1672                     break;
1673                  case CIMTYPE_SINT8:
1674                     Sint8 s8;
1675                     cv->get(s8);
1676                     return jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8);
1677                     break;
1678                  case CIMTYPE_UINT8:
1679                     Uint8 u8;
1680                     cv->get(u8);
1681 schuur 1.1          return jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8);
1682                     break;
1683                  case CIMTYPE_SINT16:
1684                     Sint16 s16;
1685                     cv->get(s16);
1686                     return jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16);
1687                     break;
1688                  case CIMTYPE_UINT16:
1689                     Uint16 u16;
1690                     cv->get(u16);
1691                     return jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16);
1692                     break;
1693                  case CIMTYPE_SINT32:
1694                     Sint32 s32;
1695                     cv->get(s32);
1696                     return jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32);
1697                     break;
1698                  case CIMTYPE_UINT32:
1699                     Uint32 u32;
1700                     cv->get(u32);
1701                     return jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32);
1702 schuur 1.1          break;
1703                  case CIMTYPE_SINT64:
1704                     Sint64 s64;
1705                     cv->get(s64);
1706                     return jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64);
1707                     break;
1708                  case CIMTYPE_UINT64: {
1709                        Uint64 u64;
1710                        cv->get(u64);
1711                        jobject big=jEnv->CallStaticObjectMethod(classRefs[14],staticMethodIDs[0],u64);
1712                        return jEnv->NewObject(classRefs[11],instanceMethodIDs[11],big);
1713                     }
1714                     break;
1715                  case CIMTYPE_REAL32:
1716                     float f;
1717                     cv->get(f);
1718                     return jEnv->NewObject(classRefs[6],instanceMethodIDs[6],f);
1719                     break;
1720                  case CIMTYPE_REAL64:
1721                     double d;
1722                     cv->get(d);
1723 schuur 1.1          return jEnv->NewObject(classRefs[7],instanceMethodIDs[7],d);
1724                     break;
1725                  case CIMTYPE_STRING: {
1726                        String s;
1727                        jstring str;
1728                        cv->get(s);
1729                        str=jEnv->NewStringUTF(s.getCString());
1730                        return str;
1731                     }
1732                     break;
1733                  case CIMTYPE_REFERENCE:  {
1734                        CIMObjectPath ref;
1735                        cv->get(ref);
1736                        return jEnv->NewObject(classRefs[12],instanceMethodIDs[12],
1737                           (jint)new CIMObjectPath(ref));
1738                     }
1739                     break;
1740                  case CIMTYPE_CHAR16:
1741                     throwCIMException(jEnv,"+++ Char16 not yet supported");
1742                     break;
1743                  case CIMTYPE_DATETIME: {
1744 schuur 1.1             CIMDateTime dt;
1745                        cv->get(dt);
1746                        return jEnv->NewObject(classRefs[24],instanceMethodIDs[35],
1747                           (jint)new CIMDateTime(dt));
1748                     }
1749            //         throwCIMException(jEnv,"+++ DateTime not yet supported");
1750                     break;
1751                  default:
1752                  	throwCIMException(jEnv,"+++ unsupported type: ");
1753                  }
1754               }
1755            
1756               else {
1757                  switch (type) {
1758                  case CIMTYPE_BOOLEAN: {
1759                        Array<Boolean> bo;
1760                        cv->get(bo);
1761                        int s=bo.size();
1762                        jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[1],0);
1763                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i, 
1764                              jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo[i]));
1765 schuur 1.1             return jbooleanA;
1766                     }
1767                     break;
1768                  case CIMTYPE_SINT8: {
1769                        Array<Sint8> s8;
1770                        cv->get(s8);
1771                        int s=s8.size();
1772                        jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[2],0);
1773                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i, 
1774                           jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8[i]));
1775                        return jbyteA;
1776                     }
1777                     break;
1778                  case CIMTYPE_UINT8: {
1779                        Array<Uint8> u8;
1780                        cv->get(u8);
1781                        int s=u8.size();
1782                        jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[8],0);
1783                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i, 
1784                           jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8[i]));
1785                        return jshortA;
1786 schuur 1.1          }
1787                     break;
1788                  case CIMTYPE_SINT16: {
1789                        Array<Sint16> s16;
1790                        cv->get(s16);
1791                        int s=s16.size();
1792                        jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[3],0);
1793                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i, 
1794                           jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16[i]));
1795                        return jshortA;
1796                     }
1797                     break;
1798                  case CIMTYPE_UINT16: {
1799                        Array<Uint16> u16;
1800                        cv->get(u16);
1801                        int s=u16.size();
1802                        jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[9],0);
1803                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i, 
1804                           jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16[i]));
1805                        return jintA;
1806                     }
1807 schuur 1.1          break;
1808                  case CIMTYPE_SINT32: {
1809                        Array<Sint32> s32;
1810                        cv->get(s32);
1811                        int s=s32.size();
1812                        jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[4],0);
1813                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i, 
1814                           jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32[i]));
1815                        return jintA;
1816                     }
1817                     break;
1818                  case CIMTYPE_UINT32: {
1819                        Array<Uint32> u32;
1820                        cv->get(u32);
1821                        int s=u32.size();
1822                        jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[10],0);
1823                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i, 
1824                           jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32[i]));
1825                        return jlongA;
1826                     }
1827                     break;
1828 schuur 1.1       case CIMTYPE_SINT64: {
1829                        Array<Sint64> s64;
1830                        cv->get(s64);
1831                        int s=s64.size();
1832                        jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[5],0);
1833                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i, 
1834                           jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64[i]));
1835                        return jlongA;
1836                     }
1837                     break;
1838                  case CIMTYPE_UINT64:
1839                     throwCIMException(jEnv,"+++ UnisgnetInt64 not yet supported");
1840                     break;
1841                  case CIMTYPE_REAL32: {
1842                        Array<Real32> r32;
1843                        cv->get(r32);
1844                        int s=r32.size();
1845                        jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[6],0);
1846                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i, 
1847                           jEnv->NewObject(classRefs[6],instanceMethodIDs[6],r32[i]));
1848                        return jfloatA;
1849 schuur 1.1          }
1850                     break;
1851                  case CIMTYPE_REAL64: {
1852                        Array<Real64> r64;
1853                        cv->get(r64);
1854                        int s=r64.size();
1855                        jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[7],0);
1856                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i, 
1857                           jEnv->NewObject(classRefs[7],instanceMethodIDs[7],r64[i]));
1858                        return jdoubleA;
1859                     }
1860                     break;
1861                  case CIMTYPE_STRING: {
1862                        Array<String> str;
1863                        cv->get(str);
1864                        int s=str.size();
1865                        jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[22],0);
1866                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i, 
1867                           jEnv->NewStringUTF(str[i].getCString()));
1868                        return jstringA;
1869                     }
1870 schuur 1.1          break;
1871                  case CIMTYPE_REFERENCE:
1872                     throwCIMException(jEnv,"+++ Reference not yet supported");
1873                     break;
1874                  case CIMTYPE_CHAR16:
1875                     throwCIMException(jEnv,"+++ Char16 not yet supported");
1876                     break;
1877                  case CIMTYPE_DATETIME:
1878                     throwCIMException(jEnv,"+++ DateTime not yet supported");
1879                     break;
1880                  default:
1881                  throwCIMException(jEnv,"+++ unsupported type: ");
1882                  }
1883               }
1884               return NULL;
1885            }
1886            
1887            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
1888                  (JNIEnv *jEnv, jobject jThs, jint jV) {
1889               CIMValue *cv=(CIMValue*)jV;
1890               delete cv;
1891 schuur 1.1 }
1892            
1893            
1894            // -------------------------------------
1895            // ---
1896            // -		CIMNameSpace
1897            // ---
1898            // -------------------------------------
1899            
1900            _nameSpace::_nameSpace() {
1901               port_=0;
1902               hostName_=System::getHostName();
1903               nameSpace_="root/cimv2";
1904            }
1905            
1906            _nameSpace::_nameSpace(String hn) {
1907               port_=0;
1908               hostName_=hn;
1909               nameSpace_="root/cimv2";
1910            }
1911            
1912 schuur 1.1 _nameSpace::_nameSpace(String hn, String ns) {
1913                port_=0;
1914                hostName_=hn;
1915                nameSpace_=ns;
1916            }
1917            
1918            int _nameSpace::port() {
1919               if (port_) return port_;
1920               port_=5988;
1921               if (hostName_.subString(0,7)=="http://") {
1922                  protocol_="http://";
1923                  hostName_=hostName_.subString(7);
1924               }
1925               Sint32 p=hostName_.reverseFind(':');
1926               if (p>=0) {
1927                  if (isdigit(hostName_[p+1]))
1928                     port_=atoi(hostName_.subString(p+1).getCString());
1929                  hostName_.remove(p);
1930               }
1931               return port_;
1932            }
1933 schuur 1.1 
1934            String _nameSpace::hostName() {
1935               port();
1936               return hostName_;
1937            }
1938            
1939            String _nameSpace::nameSpace() {
1940               return nameSpace_;
1941            }
1942            
1943            
1944            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
1945              (JNIEnv *jEnv, jobject jThs) {
1946              return (jint)(void*) new _nameSpace();
1947            }
1948            
1949            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
1950              (JNIEnv *jEnv, jobject jThs, jstring jHn) {
1951               const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
1952               jint cInst=(jint)(void*)new _nameSpace(hn);
1953               jEnv->ReleaseStringUTFChars(jHn,hn);
1954 schuur 1.1    return cInst;
1955            }
1956            
1957            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
1958              (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs) {
1959               const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
1960               const char *ns=jEnv->GetStringUTFChars(jNs,NULL);
1961               jint cInst=(jint)(void*)new _nameSpace(String(hn),String(ns));
1962               jEnv->ReleaseStringUTFChars(jHn,hn);
1963               jEnv->ReleaseStringUTFChars(jNs,ns);
1964               return cInst;
1965            }
1966            
1967            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
1968              (JNIEnv *jEnv, jobject jThs, jint jNs) {
1969               _nameSpace *cNs=(_nameSpace*)jNs;
1970               const String &hn=cNs->hostName_;
1971               jstring str=jEnv->NewStringUTF(hn.getCString());
1972               return str;
1973            }
1974            
1975 schuur 1.1 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
1976              (JNIEnv *jEnv, jobject jThs, jint jNs) {
1977               _nameSpace *cNs=(_nameSpace*)jNs;
1978               const String &ns=cNs->nameSpace_;
1979               jstring str=jEnv->NewStringUTF(ns.getCString());
1980               return str;
1981            }
1982            
1983            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
1984              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn) {
1985               _nameSpace *cNs=(_nameSpace*)jNs;
1986               const char *str=jEnv->GetStringUTFChars(jHn,NULL);
1987               cNs->port_=0;
1988               cNs->hostName_=str;
1989               jEnv->ReleaseStringUTFChars(jHn,str);
1990            }
1991            
1992            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
1993              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN) {
1994               _nameSpace *cNs=(_nameSpace*)jN;
1995               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1996 schuur 1.1    cNs->nameSpace_=str;
1997               jEnv->ReleaseStringUTFChars(jN,str);
1998            }
1999            
2000            
2001            // -------------------------------------
2002            // ---
2003            // -		Enumerators
2004            // ---
2005            // -------------------------------------
2006            
2007            
2008            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
2009              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2010               Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
2011               return (jint) new CIMInstance((*enm)[pos]);
2012            }
2013            
2014            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
2015              (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2016               Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
2017 schuur 1.1    return enm->size();
2018            }
2019            
2020            
2021            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
2022              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2023               Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
2024               return (jint) new CIMObjectPath((*enm)[pos]);
2025            }
2026            
2027            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
2028              (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2029               Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
2030               return enm->size();
2031            }
2032            
2033            // -------------------------------------
2034            // ---
2035            // -		CIMClient
2036            // ---
2037            // -------------------------------------
2038 schuur 1.1 
2039            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
2040              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw) {
2041               _nameSpace *cNs=(_nameSpace*)jNs;
2042               
2043               const char *un=jEnv->GetStringUTFChars(jUn,NULL);
2044               const char *pw=jEnv->GetStringUTFChars(jPw,NULL);
2045               
2046               try {
2047                  CIMClient *cc=new CIMClient();
2048                  cc->connect(cNs->hostName(),cNs->port(),un,pw);
2049                  jEnv->ReleaseStringUTFChars(jUn,un);
2050                  jEnv->ReleaseStringUTFChars(jPw,pw);
2051                  cout<<"### connect ok "<<(jint)(void*)cc<<endl;
2052                  return (jint)(void*)cc;
2053               }
2054               catch (CIMException e) {
2055                  jEnv->ReleaseStringUTFChars(jUn,un);
2056                  jEnv->ReleaseStringUTFChars(jPw,pw);
2057                  throwCimException(jEnv,e);
2058               }
2059 schuur 1.1    catch (...) {
2060                  jEnv->ReleaseStringUTFChars(jUn,un);
2061                  jEnv->ReleaseStringUTFChars(jPw,pw);
2062                  throwFailedException(jEnv);
2063               }
2064               return 0;
2065            }
2066            
2067            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
2068              (JNIEnv *jEnv, jobject jThs, jint jCc) {
2069               CIMClient *cCc=(CIMClient*)jCc;
2070               try {
2071                  cCc->disconnect();
2072               }
2073               catch (CIMException e) {
2074                  throwCimException(jEnv,e);
2075               }
2076            }
2077              
2078            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
2079              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jboolean lo) {
2080 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2081               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2082               try {
2083                  CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo);
2084                  return (jint) new CIMClass(cls); 
2085               }
2086               catch (CIMException e) {
2087                  throwCimException(jEnv,e);
2088               }
2089               return 0;
2090            }
2091              
2092            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
2093              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jboolean lo) {
2094               CIMClient *cCc=(CIMClient*)jCc;
2095               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2096               try {
2097                  CIMInstance inst=cCc->getInstance(cop->getNameSpace(),*cop,(Boolean)lo);
2098                  return (jint) new CIMInstance(inst); 
2099               }
2100               catch (CIMException e) {
2101 schuur 1.1       throwCimException(jEnv,e);
2102               }
2103               return 0;
2104            }
2105             
2106            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
2107              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jboolean deep, jboolean lo) {
2108               CIMClient *cCc=(CIMClient*)jCc;
2109               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2110               try {
2111                  Array<CIMInstance> enm=cCc->enumerateInstances(
2112                     cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo);
2113                  return (jint) new Array<CIMInstance>(enm); 
2114               }
2115               catch (CIMException e) {
2116                  throwCimException(jEnv,e);
2117               }
2118               return 0;
2119            }
2120            
2121            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
2122 schuur 1.1   (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jboolean deep) {
2123               CIMClient *cCc=(CIMClient*)jCc;
2124               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2125               try {
2126                  Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
2127                     cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
2128                  return (jint) new Array<CIMObjectPath>(enm); 
2129               }
2130               catch (CIMException e) {
2131                  throwCimException(jEnv,e);
2132               }
2133               return 0;
2134            }
2135            
2136            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
2137              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, int jCi) {
2138               CIMClient *cCc=(CIMClient*)jCc;
2139               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2140               CIMInstance *ci=(CIMInstance*)jCi;
2141               
2142               try {
2143 schuur 1.1       CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
2144                  return (jint) new CIMObjectPath(obj); 
2145               }
2146               catch (CIMException e) {
2147                  throwCimException(jEnv,e);
2148               }
2149              return 0;
2150            }
2151                
2152            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setInstance
2153              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jint jCi) {
2154               CIMClient *cCc=(CIMClient*)jCc;
2155               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2156               CIMInstance *ci=(CIMInstance*)jCi;
2157               
2158               try {
2159                 cCc->modifyInstance(cop->getNameSpace(),*ci);
2160               }
2161               catch (CIMException e) {
2162                  throwCimException(jEnv,e);
2163               }
2164 schuur 1.1    return ;
2165            }    
2166            
2167            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
2168              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jstring jPn) {
2169              throwNotSupportedException(jEnv);
2170              return 0;
2171            } 
2172               
2173            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
2174              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jstring jPn, jint jV) {
2175              throwNotSupportedException(jEnv);
2176              return;
2177            }    
2178               
2179            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
2180              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop) {
2181              throwNotSupportedException(jEnv);
2182              return;
2183            }    
2184               
2185 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
2186              (JNIEnv *jEnv, jobject jThs, jint jCc, int jCop, jstring jQuery, jstring jQl) {
2187              throwNotSupportedException(jEnv);
2188              return 0;
2189            }     
2190               
2191            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
2192              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop,  
2193               jstring assocClass, jstring resultClass, jstring role, jstring resultRole) {
2194              throwNotSupportedException(jEnv);
2195              return 0;
2196            }  
2197              
2198            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
2199              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop,  
2200               jstring assocClass, jstring resultClass, jstring role, jstring resultRole,
2201               jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray propertyList) {
2202              throwNotSupportedException(jEnv);
2203              return 0;
2204            }  
2205              
2206 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
2207              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop,  
2208               jstring assocClass, jstring resultClass) {
2209              throwNotSupportedException(jEnv);
2210              return 0;
2211            }  
2212              
2213            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
2214              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop,  
2215               jstring assocClass, jstring resultClass,
2216               jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray propertyList) {
2217              throwNotSupportedException(jEnv);
2218              return 0;
2219            }  
2220            
2221            } // extern "C" 
2222            
2223            PEGASUS_NAMESPACE_END
2224            
2225            
2226            
2227 schuur 1.1 
2228            
2229            
2230            

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2