(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 schuur 1.3 #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
  51 schuur 1.1 
  52            PEGASUS_USING_STD;
  53            PEGASUS_NAMESPACE_BEGIN
  54            
  55            JavaVM *JMPIjvm::jvm=NULL;
  56            JvmVector JMPIjvm::jv;
  57 schuur 1.2 int JMPIjvm::trace=0;
  58 schuur 1.1 
  59            typedef struct {
  60              int clsIndex;
  61              const char * methodName;
  62              const char * signature;
  63            } METHOD_STRUCT;
  64            
  65            const char* classNames[]={
  66                  "java/util/Vector" , // 0
  67                  "java/lang/Boolean", // 1
  68                  "java/lang/Byte",    // 2
  69                  "java/lang/Short",   // 3
  70                  "java/lang/Integer", // 4
  71                  "java/lang/Long",    // 5
  72                  "java/lang/Float",   // 6
  73                  "java/lang/Double",  // 7
  74                  "org/pegasus/jmpi/UnsignedInt8",    // 8
  75                  "org/pegasus/jmpi/UnsignedInt16",   // 9
  76                  "org/pegasus/jmpi/UnsignedInt32",   // 10
  77                  "org/pegasus/jmpi/UnsignedInt64",   // 11
  78                  "org/pegasus/jmpi/CIMObjectPath",   // 12
  79 schuur 1.1       "org/pegasus/jmpi/CIMException",    // 13
  80                  "java/math/BigInteger",             // 14
  81                  "org/pegasus/jmpi/CIMProperty",     // 15
  82            
  83                  "org/pegasus/jmpi/CIMOMHandle",     // 16
  84                  "org/pegasus/jmpi/CIMClass",        // 17
  85                  "org/pegasus/jmpi/CIMInstance",     // 18
  86                  "org/pegasus/jmpi/CIMValue",        // 19
  87 schuur 1.3       "java/lang/Object",                 // 20
  88                  "java/lang/Throwable",              // 21
  89                  "java/lang/String",                 // 22
  90 schuur 1.1       "org/pegasus/jmpi/JarClassLoader",  // 23
  91 schuur 1.3       "org/pegasus/jmpi/CIMDateTime",     // 24
  92                  "org/pegasus/jmpi/SelectExp",       // 25
  93 schuur 1.5       "org/pegasus/jmpi/CIMQualifier",    // 26
  94                  "org/pegasus/jmpi/CIMQualifierType",// 27
  95                  "org/pegasus/jmpi/CIMFlavor",       // 28
  96 schuur 1.1 };
  97            
  98            
  99            const METHOD_STRUCT instanceMethodNames[]={
 100 schuur 1.3 /*00*/ { 0, "<init>",        "()V" },
 101 schuur 1.1 /*01*/ { 1, "<init>",        "(Z)V" },
 102            /*02*/ { 2, "<init>",        "(B)V" },
 103            /*03*/ { 3, "<init>",        "(S)V" },
 104            /*04*/ { 4, "<init>",        "(I)V" },
 105            /*05*/ { 5, "<init>",        "(J)V" },    // ???
 106            /*06*/ { 6, "<init>",        "(F)V" },
 107            /*07*/ { 7, "<init>",        "(D)V" },
 108            /*08*/ { 8, "<init>",        "(S)V" },
 109            /*09*/ { 9, "<init>",        "(I)V" },
 110            /*10*/ { 10,"<init>",        "(J)V" },
 111            /*11*/ { 11,"<init>",        "(Ljava/math/BigInteger;)V" },
 112            /*12*/ { 12,"<init>",        "(I)V" },
 113            /*13*/ { 13,"<init>",        "(Ljava/lang/String;)V" },
 114            /*14*/ { 15,"<init>",        "(I)V" },
 115            /*15*/ { 0, "addElement",    "(Ljava/lang/Object;)V" },
 116            
 117            /*16*/ { 0, "elementAt",     "(I)Ljava/lang/Object;" },
 118 schuur 1.3 /*17*/ { 16,"<init>",        "(ILjava/lang/String;)V" },
 119 schuur 1.1 /*18*/ { 13,"<init>",        "(I)V" },
 120            /*19*/ { 17,"<init>",        "(I)V" },
 121            /*20*/ { 18,"<init>",        "(I)V" },
 122            /*21*/ { 12,"<init>",        "(I)V" },
 123            /*22*/ { 12,"cInst",         "()I" },
 124            /*23*/ { 18,"cInst",         "()I" },
 125            /*24*/ { 17,"cInst",         "()I" },
 126            /*25*/ { 20,"toString",      "()Ljava/lang/String;" },
 127            /*26*/ { 21,"getMessage",    "()Ljava/lang/String;" },
 128            /*27*/ { 13,"getID",         "()Ljava/lang/String;" },
 129            /*28*/ { 0, "size",          "()I" },
 130            /*29*/ { 15,"cInst",         "()I" },
 131            /*30*/ { 16,"getClass",      "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 132            /*31*/ { 0, "removeElementAt",     "(I)V" },
 133            /*32*/ { 19,"cInst",         "()I" },
 134            /*33*/ { 13,"<init>",         "(ILjava/lang/String;)V" },
 135            /*34*/ { 13,"getCode",        "()I" },
 136            /*35*/ { 12,"<init>",         "(I)V" },
 137 schuur 1.3 /*36*/ { 25,"<init>",         "(I)V" },
 138 schuur 1.5 /*37*/ { 26,"<init>",         "(I)V" },
 139            /*38*/ { 28,"<init>",         "(I)V" },
 140            /*38*/ { 28,"getFlavor",      "()I" },
 141 schuur 1.1 };
 142            
 143            const METHOD_STRUCT staticMethodNames[]={
 144                  { 14, "valueOf",      "(J)Ljava/math/BigInteger;" },
 145                  { 23, "load",         "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 146            };
 147            
 148            
 149            static int methodInitDone=0;
 150            
 151            jclass classRefs[sizeof(classNames)/sizeof(char*)];
 152            jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)];
 153            jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)];
 154            static jclass providerClassRef;
 155            
 156            jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) {
 157              jclass localRefCls=env->FindClass(name);
 158            //  if (env->ExceptionOccurred())
 159            //  env->ExceptionDescribe();
 160              if (localRefCls==NULL) return JNI_FALSE;
 161              jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
 162 schuur 1.1   env->DeleteLocalRef(localRefCls);
 163              return globalRefCls;
 164            }
 165            
 166            JMPIjvm::JMPIjvm() {
 167               initJVM();
 168            }
 169            
 170            JMPIjvm::~JMPIjvm() {
 171              
 172            }
 173            
 174            int JMPIjvm::cacheIDs(JNIEnv *env) {
 175               if (methodInitDone==1) return JNI_TRUE;
 176               if (methodInitDone==-1) return JNI_FALSE;
 177            
 178               methodInitDone=-1;
 179               for (unsigned i=0; i<(sizeof(classNames)/sizeof(char*)); i++) {
 180            //      cerr<<"--- Trying "<< classNames[i]<<endl;
 181 schuur 1.3       if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL) return JNI_FALSE;
 182 schuur 1.1    }
 183              
 184               for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)); j++) {
 185            //      cerr<<"--- Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<endl;
 186                  if ((instanceMethodIDs[j]=env->GetMethodID( 
 187                       classRefs[instanceMethodNames[j].clsIndex],
 188                       instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL) return 0;
 189                  if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL)
 190                     return 0;
 191               }
 192            
 193               for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)); k++) {
 194            //      cerr<<"--- Trying "<<k<<endl;
 195                  if ((staticMethodIDs[k]=env->GetStaticMethodID( 
 196                      classRefs[staticMethodNames[k].clsIndex],
 197                      staticMethodNames[k].methodName,staticMethodNames[k].signature))==NULL) return 0;
 198               }
 199            //   cerr<<"--- cacheIDs() done"<<endl;
 200               methodInitDone=1;
 201               return JNI_TRUE;
 202            }
 203 schuur 1.1 
 204            static void throwCIMException(JNIEnv *env,char *e) {
 205               env->ThrowNew(classRefs[13],e);
 206            }
 207            
 208 schuur 1.3 int JMPIjvm::destroyJVM()
 209            {
 210               if (trace) cerr<<"--- JPIjvm::destroyJVM()\n";
 211               #ifdef JAVA_DESTROY_VM_WORKS
 212               if (jvm!=NULL) {
 213                  JvmVector *jv;
 214                  attachThread(&jv);
 215                  jvm->DestroyJavaVM();
 216                  jvm=NULL;
 217                  return 0;
 218               }
 219               #endif
 220               return -1;
 221            }
 222            
 223 schuur 1.1 int JMPIjvm::initJVM()
 224            {
 225               JavaVMInitArgs vm_args;
 226               JavaVMOption options[1];
 227               jint res;
 228               char *envcp;
 229               char classpath[1024]="-Djava.class.path=";
 230               JNIEnv *env;
 231            
 232 schuur 1.2    if (getenv("JMPI_TRACE")) trace=1;
 233               else trace=0;
 234            
 235               if (trace) cerr<<"--- JPIjvm::initJVM()\n";
 236 schuur 1.1    jv.initRc=0;
 237            
 238               envcp=getenv("CLASSPATH");
 239               if (envcp==NULL) {
 240                  jv.initRc=1;
 241 schuur 1.2       cerr<<"--- jmpiJvm::initJVM(): No PEGASUS_PROVIDER_CLASSPATH environment variable found\n";
 242 schuur 1.1       return -1;
 243               }
 244            
 245               strcat(classpath,envcp);
 246               options[0].optionString=classpath;
 247               vm_args.version=0x00010002;
 248               vm_args.options=options;
 249               vm_args.nOptions=1;
 250               vm_args.ignoreUnrecognized=JNI_TRUE;
 251            
 252               res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 253               if (res!=0) {
 254                  fprintf(stderr,"Can not create Java VM\n");
 255                  exit(1);
 256               }
 257               jv.jvm=jvm;
 258               jv.env=env;
 259            
 260               if (cacheIDs(env)==1) {
 261                  jv.classRefs=classRefs;
 262                  jv.instMethodIDs=instanceMethodIDs;
 263 schuur 1.1    }
 264            
 265               if (env->ExceptionOccurred()) {
 266                  env->ExceptionDescribe();
 267                  exit(1);
 268               }
 269            
 270               return res;
 271            }
 272            
 273            JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) {
 274               JNIEnv* env;
 275               if (jvm==NULL) initJVM();
 276               jvm->AttachCurrentThread((void**)&env,NULL);
 277               *jvp=&jv;
 278               return env;
 279            }
 280            
 281            void JMPIjvm::detachThread() {
 282               jvm->DetachCurrentThread();
 283            }
 284 schuur 1.1 
 285            jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
 286                 const char *cn, jclass *cls)
 287            {
 288               static jobject gProv=NULL;
 289               static jclass scls=NULL;
 290               if (gProv) {
 291                  *cls=scls;
 292                  return gProv;
 293               }
 294            
 295               /*
 296 schuur 1.2    cout<<"--- jar: "<<jar<<endl;
 297               cout<<"--- cln: "<<cln<<endl;
 298 schuur 1.1 
 299               jstring jjar=env->NewStringUTF((const char*)jar.getCString());
 300               jstring jcln=env->NewStringUTF((const char*)cln.getCString());
 301            
 302               jclass jcls=(jclass)env->CallStaticObjectMethod(classRefs[23],staticMethodIDs[1],
 303                  jjar,jcln);
 304               if (env->ExceptionCheck()) {
 305                  env->ExceptionDescribe();
 306 schuur 1.2       cerr<<"--- Unable to instantiate provider "<<cn<<endl;
 307 schuur 1.1  //     return NULL;
 308               }
 309            */
 310            
 311               scls=getGlobalClassRef(env,(const char*)cln.getCString());
 312               if (env->ExceptionCheck()) {
 313 schuur 1.2       cerr<<"--- Provider "<<cn<<" not found"<<endl;
 314 schuur 1.1       return NULL;
 315               }
 316            	*cls=scls;
 317            
 318               jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 319               jobject lProv=env->NewObject(*cls,id);
 320               gProv=(jobject)env->NewGlobalRef(lProv);
 321               if (env->ExceptionCheck()) {
 322 schuur 1.2       cerr<<"--- Unable to instantiate provider "<<cn<<endl;
 323 schuur 1.1       return NULL;
 324               }
 325               return gProv;
 326            }
 327            
 328            jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
 329            {
 330               static jobject gProv=NULL;
 331               static jclass scls=NULL;
 332               if (gProv) {
 333                  *cls=scls;
 334                  return gProv;
 335               }
 336            
 337               scls=getGlobalClassRef(env,cn);
 338               if (env->ExceptionCheck()) {
 339 schuur 1.2       cerr<<"--- Provider "<<cn<<" not found"<<endl;
 340 schuur 1.1       return NULL;
 341               }
 342            	*cls=scls;
 343            
 344               jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 345               jobject lProv=env->NewObject(*cls,id);
 346               gProv=(jobject)env->NewGlobalRef(lProv);
 347               if (env->ExceptionCheck()) {
 348 schuur 1.2       cerr<<"--- Unable to instantiate provider "<<cn<<endl;
 349 schuur 1.1       return NULL;
 350               }
 351               return gProv;
 352            }
 353            
 354            void JMPIjvm::checkException(JNIEnv *env)
 355            {
 356               jstring msg=NULL,id=NULL;
 357               int code;
 358               const char *cp;
 359               char hcp[512]="",hcp1[128];
 360               String m=String::EMPTY;
 361            
 362               if (env->ExceptionCheck()) {
 363                  jthrowable err=env->ExceptionOccurred();
 364 schuur 1.2       if (trace)
 365                     env->ExceptionDescribe();
 366 schuur 1.1       env->ExceptionClear();
 367                  if (err) {
 368                     msg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
 369                     code=(int)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
 370                     id=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
 371                     if (id) {
 372                        const char *cp=env->GetStringUTFChars(id,NULL);
 373                        strncpy(hcp1,cp,511);
 374                        env->ReleaseStringUTFChars(id,cp);
 375                     }
 376            
 377                     if (msg) {
 378                        const char *cp=env->GetStringUTFChars(msg,NULL);
 379                        strncpy(hcp,cp,511);
 380                        env->ReleaseStringUTFChars(msg,cp);
 381                        m=String(hcp);
 382 schuur 1.2          }
 383            	 if (trace)
 384                        cerr<<"--- throwing Pegasus exception: "<<hcp1<<" ("<<hcp<<") "<<endl;
 385 schuur 1.1          throw CIMException((CIMStatusCode)code,m);
 386                  }
 387               }
 388 schuur 1.2 }
 389 schuur 1.1 
 390            /**************************************************************************
 391             * name         - NewPlatformString
 392             * description  - Returns a new Java string object for the specified
 393             *                platform string.
 394             * parameters   - env
 395             *                s     Platform encoded string
 396             * returns      - Java string object pointer or null (0)
 397             **************************************************************************/
 398            jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
 399            {
 400                size_t len = strlen(s);
 401                jclass cls;
 402                jmethodID mid;
 403                jbyteArray ary;
 404            
 405                NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
 406                NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
 407                ary = (*env).NewByteArray((jsize)len);
 408                if (ary != 0) {
 409                    jstring str = 0;
 410 schuur 1.1         (*env).SetByteArrayRegion(ary, 0, (jsize)len,
 411                                               (jbyte *)s);
 412                    if (!(*env).ExceptionOccurred()) {
 413                        str = (jstring)(*env).NewObject(cls, mid, ary);
 414                    }
 415                    (*env).DeleteLocalRef(ary);
 416                    return str;
 417                }
 418                return 0;
 419            }
 420            
 421            
 422            /**************************************************************************
 423             * name         - NewPlatformStringArray
 424             * description  - Returns a new array of Java string objects for the specified
 425             *                array of platform strings.
 426             * parameters   - env
 427             *                strv      Platform encoded string array
 428             *                strc      Number of strings in strv
 429             * returns      - Java string array object pointer
 430             **************************************************************************/
 431 schuur 1.1 jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
 432            {
 433                jarray cls;
 434                jarray ary;
 435                int i;
 436            
 437                NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
 438                NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
 439                for (i = 0; i < strc; i++) {
 440                    jstring str = NewPlatformString(env, *strv++);
 441                    NULL_CHECK0(str);
 442                    (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
 443                    (*env).DeleteLocalRef(str);
 444                }
 445                return (jobjectArray)ary;
 446            }
 447            
 448            
 449            
 450            
 451            
 452 schuur 1.1 extern "C" {
 453            
 454            
 455            void throwCimException(JNIEnv *jEnv, CIMException & e) {
 456                  JMPIjvm::cacheIDs(jEnv);
 457                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],(jint)e.getCode());
 458                  jEnv->Throw((jthrowable)ev);
 459            }
 460            
 461            void throwFailedException(JNIEnv *jEnv) {
 462                  JMPIjvm::cacheIDs(jEnv);
 463                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],1);
 464                  jEnv->Throw((jthrowable)ev);
 465            }
 466            
 467            void throwNotSupportedException(JNIEnv *jEnv) {
 468                  JMPIjvm::cacheIDs(jEnv);
 469                  jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],7);
 470                  jEnv->Throw((jthrowable)ev);
 471            }
 472            
 473 schuur 1.1 
 474            // -------------------------------------
 475            // ---
 476            // -		CIMOMHandle
 477            // ---
 478            // -------------------------------------
 479            
 480            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
 481              (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo) {
 482               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 483               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 484               OperationContext ctx;
 485               try {
 486                  CIMClass cc=ch->getClass(ctx,cop->getNameSpace(),cop->getClassName(),
 487                     (Boolean)lo,
 488                     true,true,CIMPropertyList());
 489                  return (jint)new CIMClass(cc);
 490               }
 491               Catch(jEnv);
 492               return 0;
 493            }
 494 schuur 1.1 
 495            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumClass
 496              (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jobject jVec) {
 497               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 498               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 499               OperationContext ctx;
 500               try {
 501                  Array<CIMClass> en=ch->enumerateClasses(ctx,cop->getNameSpace(),cop->getClassName(),
 502                     true,(Boolean)lo,true,true);
 503                  if (!cop->getClassName().isNull())
 504                     en.append(ch->getClass(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
 505                        true,true,CIMPropertyList()));
 506                  for (int i=0,m=en.size(); i<m; i++) {
 507                     CIMClass *cls=new CIMClass(en[i]);
 508                     jobject jCls=jEnv->NewObject(classRefs[17],instanceMethodIDs[19],(jint)cls);
 509                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],jCls);
 510                  }
 511                  return;
 512               }
 513               Catch(jEnv);
 514               return;
 515 schuur 1.1 }
 516            
 517            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
 518               (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN) {
 519            
 520               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 521               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 522               OperationContext ctx;
 523               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 524 schuur 1.3 
 525 schuur 1.1    try {
 526                  CIMName prop(str);
 527                  CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
 528                  jEnv->ReleaseStringUTFChars(jN,str);
 529                  return (jint)(void*)cv;
 530               }
 531               Catch(jEnv);
 532               return -1;
 533            }
 534            
 535            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
 536               (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) {
 537            
 538               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 539               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 540               OperationContext ctx;
 541 schuur 1.3 
 542 schuur 1.1    try {
 543                  ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
 544               }
 545               Catch(jEnv);
 546            }
 547            
 548            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumInstances
 549            (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean jDeep, jboolean jLocalOnly, jobject jVec) {
 550            
 551               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 552               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 553               OperationContext ctx;
 554 schuur 1.3 
 555 schuur 1.1    try {
 556                  Array<CIMInstance> inst=ch->enumerateInstances(ctx,cop->getNameSpace(),cop->getClassName(),
 557                      (Boolean)jDeep,(Boolean)jLocalOnly,true,true,CIMPropertyList());
 558                  for (int i=0,s=inst.size(); i<s; i++){
 559                     CIMInstance *ci=new CIMInstance(inst[i]);
 560                     jobject jCi=jEnv->NewObject(classRefs[18],instanceMethodIDs[20],(jint)ci);
 561                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],jCi);
 562                  }
 563               }
 564               Catch(jEnv);
 565            }
 566            
 567            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
 568 schuur 1.3    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean jLocalOnly) {
 569 schuur 1.1 
 570               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 571               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 572               OperationContext ctx;
 573 schuur 1.3 
 574 schuur 1.1    try {
 575                  CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,cop->getNameSpace(),*cop,
 576                      (Boolean)jLocalOnly,false,false,CIMPropertyList()));
 577                  return (jint)(void*)inst;
 578               }
 579               Catch(jEnv);
 580               return -1;
 581            }
 582            
 583 schuur 1.3 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent
 584               (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd) {
 585            
 586               CIMOMHandle *ch=(CIMOMHandle*)jCh;
 587               CIMInstance *ind=(CIMInstance*)jInd;
 588 schuur 1.1 
 589 schuur 1.3    const char *str=jEnv->GetStringUTFChars(jName,NULL);
 590               String name(str);
 591               jEnv->ReleaseStringUTFChars(jName,str);
 592               str=jEnv->GetStringUTFChars(jNs,NULL);
 593               String ns(str);
 594               jEnv->ReleaseStringUTFChars(jNs,str);
 595            
 596               JMPIProviderManager::indProvRecord *prec;
 597               OperationContext* context;
 598            
 599               if (JMPIProviderManager::provTab.lookup(name,prec)) {
 600                  if (prec->enabled) {
 601                     context=prec->ctx;
 602                     try {
 603                        prec->handler->deliver(*context, *ind);
 604                     }
 605                     Catch(jEnv);
 606                  }
 607               }
 608               else {
 609                  cout<<"_deliverEvent() "<<name<<" not found"<<endl;
 610 schuur 1.3    }
 611            }
 612 schuur 1.1 
 613            // -------------------------------------
 614            // ---
 615            // -		CIMClass
 616            // ---
 617            // -------------------------------------
 618            
 619            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
 620              (JNIEnv *jEnv, jobject jThs, jint jCls) {
 621               CIMClass *cls=(CIMClass*)jCls;
 622               try {
 623                  CIMInstance *ci=new CIMInstance(cls->getClassName());
 624 schuur 1.5       for (int i=0,m=cls->getQualifierCount(); i<m; i++) {
 625                     try {
 626                        ci->addQualifier(cls->getQualifier(i).clone());
 627            	 }
 628            	 catch (Exception e) {}
 629                  }
 630 schuur 1.1       for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
 631                     CIMProperty cp= cls->getProperty(i);
 632                     ci->addProperty(cp.clone());
 633 schuur 1.5          for (int j=0, s=cp.getQualifierCount(); j<s; j++) {
 634                        try {
 635                           ci->getProperty(i).addQualifier(cp.getQualifier(j));
 636            	    }
 637            	    catch (Exception e) {}
 638            	 }
 639 schuur 1.1       }
 640                  return (jint)ci;
 641               }
 642               Catch(jEnv);
 643               return 0;
 644            }
 645            
 646            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
 647               (JNIEnv *jEnv, jobject jThs, jint jCls) {
 648               CIMClass *cls=(CIMClass*)jCls;
 649               
 650               try {
 651                  const String &cn=cls->getClassName().getString();
 652                  jstring str=jEnv->NewStringUTF(cn.getCString());
 653                  return str;
 654               }
 655               Catch(jEnv);
 656               return 0;
 657            }
 658            
 659            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
 660 schuur 1.1    (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 661               CIMClass *cls=(CIMClass*)jCls;
 662               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 663               jint rv=-1;
 664               Uint32 pos=cls->findQualifier(String(str));
 665               if (pos!=PEG_NOT_FOUND)
 666                  rv=(jint)new CIMQualifier(cls->getQualifier(pos));
 667               jEnv->ReleaseStringUTFChars(jN,str);
 668               return rv;
 669            }
 670            
 671            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
 672                 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 673               CIMClass *cls=(CIMClass*)jCls;
 674               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 675               jint rv=-1;
 676               Uint32 pos=cls->findProperty(CIMName(str));
 677               if (pos!=PEG_NOT_FOUND)
 678                  rv=(jint)new CIMProperty(cls->getProperty(pos));
 679               jEnv->ReleaseStringUTFChars(jN,str);
 680               return rv;
 681 schuur 1.1 }
 682            
 683            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
 684                 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ) {
 685               CIMClass *cls=(CIMClass*)jCls;
 686               const char *str=jEnv->GetStringUTFChars(jQ,NULL);
 687               Uint32 pos=cls->findQualifier(String(str));
 688               jEnv->ReleaseStringUTFChars(jQ,str);
 689               return (jboolean)(pos!=PEG_NOT_FOUND);
 690            }
 691            
 692            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
 693                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
 694               CIMClass *cls=(CIMClass*)jCls;
 695 schuur 1.5 
 696 schuur 1.1    for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
 697                  CIMProperty *cp=new CIMProperty(cls->getProperty(i));
 698                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 699                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 700               }
 701               return jVec;
 702            }
 703            
 704 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
 705                  (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP) {
 706               CIMClass *cls=(CIMClass*)jCls;
 707               CIMProperty *p=(CIMProperty*)jP;
 708               cls->addProperty(*p);
 709            }
 710            
 711            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
 712                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
 713               CIMClass *cls=(CIMClass*)jCls;
 714               for (int i=cls->getPropertyCount()-1; i>=0; i--) {
 715                  cls->removeProperty(i);
 716               }
 717               for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {
 718                  jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));
 719                  CIMProperty *cp=(CIMProperty*)jEnv->CallIntMethod(o,instanceMethodIDs[29]);
 720                  cls->addProperty(*cp);
 721               }
 722            }
 723            
 724            
 725 schuur 1.5 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
 726                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
 727               CIMClass *cls=(CIMClass*)jCls;
 728            
 729               for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
 730                  CIMQualifier *cq=new CIMQualifier(cls->getQualifier(i));
 731                  jobject qual=jEnv->NewObject(classRefs[26],instanceMethodIDs[37],(jint)cq);
 732                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],qual);
 733               }
 734               return jVec;
 735            }
 736            
 737 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
 738                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
 739               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 740               CIMClass *cls = new CIMClass(CIMName(str), CIMName());
 741               jEnv->ReleaseStringUTFChars(jN,str);
 742               return (jint)(void*)cls;
 743            }
 744            
 745            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
 746                  (JNIEnv *jEnv, jobject jThs, jint jCls) {
 747               CIMClass *cls =(CIMClass *)jCls;
 748               const String &cn=cls->getSuperClassName().getString();
 749               jstring str=jEnv->NewStringUTF(cn.getCString());
 750               return str;
 751            }
 752            
 753            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
 754                  (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec){
 755               CIMClass *cls=(CIMClass*)jCls;
 756               if (cls->hasKeys()) {
 757                  Array<CIMName> keyNames;
 758 schuur 1.1       cls->getKeyNames(keyNames);
 759                  for(int i=0, s=keyNames.size();i<s;i++){
 760                     Uint32 pos=cls->findProperty(keyNames[i]);
 761                     if (pos!=PEG_NOT_FOUND){
 762                        CIMProperty *cp=new CIMProperty(cls->getProperty(pos));
 763                        jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 764                        jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 765                     }
 766                  }
 767               }
 768               return jVec;
 769            }
 770            
 771            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
 772                  (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
 773               CIMClass *cls=(CIMClass*)jCls;
 774               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 775               jint rv=-1;
 776               Uint32 pos=cls->findMethod(String(str));
 777               if (pos!=PEG_NOT_FOUND) {
 778                  rv=(jint)new CIMMethod(cls->getMethod(pos));
 779 schuur 1.1    }
 780               jEnv->ReleaseStringUTFChars(jN,str);
 781               return rv;
 782            }
 783            
 784            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
 785                  (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared) {
 786               CIMClass *cls = (CIMClass*)jCls;
 787               CIMClass *clsToBeCompared = (CIMClass*)jClsToBeCompared;
 788               return cls->identical(*clsToBeCompared);
 789            }
 790            
 791            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
 792                 (JNIEnv *jEnv, jobject jThs, jint jCls) {
 793               CIMClass *cls=(CIMClass*)jCls;
 794               delete cls;
 795            }
 796            
 797            
 798            
 799            // -------------------------------------
 800 schuur 1.1 // ---
 801            // -		CIMInstance
 802            // ---
 803            
 804            // -------------------------------------
 805            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
 806                  (JNIEnv *jEnv, jobject jThs) {
 807               return (jint)new CIMInstance();
 808            }
 809            
 810            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
 811                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
 812               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 813               return (jint)new CIMInstance(CIMName(str));
 814            }
 815            
 816            //Added by Andy Viciu
 817            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
 818                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 819               CIMInstance *ci=(CIMInstance*)jInst;
 820               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 821 schuur 1.1    /* NOT SUPPORTED AND NOT NEEDED*/
 822            }
 823            
 824            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
 825                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV) {
 826               CIMInstance *ci=(CIMInstance*)jInst;
 827               CIMValue *cv=(CIMValue*)jV;
 828               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 829               Uint32 pos=ci->findProperty(CIMName(str));
 830 schuur 1.5    try {
 831 schuur 1.1    if (pos!=PEG_NOT_FOUND) {
 832                  CIMProperty cp=ci->getProperty(pos);
 833                 if (cp.getType()==cv->getType())
 834                     cp.setValue(*cv);
 835                 else {
 836 schuur 1.5          cerr<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"
 837            	     <<ci->getClassName().getString()<<", property name: "<<str<<")";
 838                     cerr<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<endl;
 839 schuur 1.1          throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
 840                  }
 841               }
 842               else {
 843                  CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
 844                  ci->addProperty(*cp);
 845               }
 846 schuur 1.5    }
 847               Catch(jEnv);
 848 schuur 1.1 
 849               jEnv->ReleaseStringUTFChars(jN,str);
 850            }
 851            
 852 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
 853                  (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV) {
 854                     throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported"));
 855            }
 856            
 857 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
 858                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 859               CIMInstance *ci=(CIMInstance*)jInst;
 860               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 861               jint rv=-1;
 862               try {
 863                  Uint32 pos=ci->findProperty(CIMName(str));
 864                  if (pos!=PEG_NOT_FOUND) {
 865                     CIMProperty *cp=new CIMProperty(ci->getProperty(pos));
 866                     rv=(jint)cp;
 867                  }
 868               }
 869               Catch(jEnv);
 870               jEnv->ReleaseStringUTFChars(jN,str);
 871               return rv;
 872            }
 873            
 874            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
 875                  (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
 876               CIMInstance *ci=(CIMInstance*)jInst;
 877 schuur 1.5 
 878 schuur 1.1    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
 879                  if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
 880                     CIMProperty *cp=new CIMProperty(ci->getProperty(i));
 881                     jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 882                     jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 883                  }
 884               }
 885            
 886               return jVec;
 887            }
 888            
 889            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
 890                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 891               CIMInstance *ci=(CIMInstance*)jInst;
 892               const String &cn=ci->getClassName().getString();
 893               jstring str=jEnv->NewStringUTF(cn.getCString());
 894               return str;
 895            }
 896            
 897            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
 898                  (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
 899 schuur 1.1    CIMInstance *ci=(CIMInstance*)jInst;
 900               const char *str=jEnv->GetStringUTFChars(jN,NULL);
 901               jint rv=-1;
 902               Uint32 pos=ci->findQualifier(String(str));
 903               if (pos!=PEG_NOT_FOUND) {
 904                  rv=(jint)new CIMQualifier(ci->getQualifier(pos));
 905               }
 906               jEnv->ReleaseStringUTFChars(jN,str);
 907               return rv;
 908            }
 909            
 910            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
 911                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 912               CIMInstance *ci=(CIMInstance *)jInst;
 913               CIMInstance* cl=new CIMInstance(ci->clone());
 914               return (jint)(void*)cl;
 915            }
 916            
 917            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
 918                  (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
 919               CIMInstance *ci=(CIMInstance*)jInst;
 920 schuur 1.1    for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
 921                  CIMProperty *cp=new CIMProperty(ci->getProperty(i));
 922                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
 923                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
 924               }
 925               return jVec;
 926            }
 927            
 928            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
 929                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 930               CIMInstance *ci=(CIMInstance*)jInst;
 931               delete ci;
 932            }
 933            
 934            
 935            // -------------------------------------
 936            // ---
 937            // -		CIMObjectPath
 938            // ---
 939            // -------------------------------------
 940            
 941 schuur 1.1 CIMObjectPath* construct() {
 942               CIMObjectPath *cop=new CIMObjectPath();
 943               _nameSpace n;
 944               cop->setNameSpace(n.nameSpace());
 945               cop->setHost(n.hostName());
 946               return cop;
 947            }
 948            
 949            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
 950                  (JNIEnv *jEnv, jobject jThs) {
 951               return (jint)construct();
 952            }
 953            
 954            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
 955                  (JNIEnv *jEnv, jobject jThs, jstring jCn) {
 956               CIMObjectPath *cop=construct();
 957               const char *str=jEnv->GetStringUTFChars(jCn,NULL);
 958               if (str) cop->setClassName(str);
 959               jEnv->ReleaseStringUTFChars(jCn,str);
 960               return (jint)(void*)cop;
 961            }
 962 schuur 1.1 
 963            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
 964                  (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs) {
 965               CIMObjectPath *cop=construct();
 966            
 967               const char *str1=jEnv->GetStringUTFChars(jCn,NULL);
 968               const char *str2=jEnv->GetStringUTFChars(jNs,NULL);
 969               try {
 970                  if (str1) cop->setClassName(str1);
 971                  if (str2) cop->setNameSpace(str2);
 972               }
 973 schuur 1.5    Catch(jEnv);
 974 schuur 1.1 
 975               jEnv->ReleaseStringUTFChars(jCn,str1);
 976               jEnv->ReleaseStringUTFChars(jNs,str2);
 977               return (jint)(void*)cop;
 978            }
 979            
 980            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
 981                  (JNIEnv *jEnv, jobject jThs, jint jInst) {
 982               CIMInstance *ci = (CIMInstance *)jInst;
 983               CIMObjectPath *cop=new CIMObjectPath(ci->getPath());
 984               _nameSpace n;
 985               if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
 986               if (cop->getHost()==NULL) cop->setHost(n.hostName());
 987               return (jint)(void*)cop;
 988            }
 989            
 990            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
 991                  (JNIEnv *jEnv, jobject jThs, jint jCop) {
 992               CIMObjectPath *cop=(CIMObjectPath*)jCop;
 993               delete cop;
 994            }
 995 schuur 1.1 
 996            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
 997                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
 998               CIMObjectPath *cop=(CIMObjectPath*)jOp;
 999               const String &hn=cop->getHost();
1000               jstring str=jEnv->NewStringUTF(hn.getCString());
1001               return str;
1002            }
1003            
1004            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
1005                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1006               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1007               const char *str=jEnv->GetStringUTFChars(jName,NULL);
1008               cop->setHost(String(str));
1009               jEnv->ReleaseStringUTFChars(jName,str);
1010            }
1011            
1012            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
1013                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1014               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1015               const String &cn=cop->getClassName().getString();
1016 schuur 1.1    jstring str=jEnv->NewStringUTF(cn.getCString());
1017               return str;
1018            }
1019            
1020            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
1021                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1022               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1023               const char *str=jEnv->GetStringUTFChars(jName,NULL);
1024               cop->setClassName(String(str));
1025               jEnv->ReleaseStringUTFChars(jName,str);
1026            }
1027            
1028            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
1029                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1030               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1031               const String &ns=cop->getNameSpace().getString();
1032               jstring str=jEnv->NewStringUTF(ns.getCString());
1033               return str;
1034            }
1035            
1036            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
1037 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1038               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1039               const char *str=jEnv->GetStringUTFChars(jName,NULL);
1040               cop->setNameSpace(CIMNamespaceName(str));
1041               jEnv->ReleaseStringUTFChars(jName,str);
1042            }
1043            
1044            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
1045                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jId, jint jVal) {
1046               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1047               const char *str=jEnv->GetStringUTFChars(jId,NULL);
1048               CIMValue *cv=(CIMValue*)jVal;
1049               Array<CIMKeyBinding> keyBindings=cop->getKeyBindings();
1050               keyBindings.append(CIMKeyBinding(str,*cv));
1051               cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
1052               jEnv->ReleaseStringUTFChars(jId,str);
1053               return;
1054            }
1055            
1056            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
1057                  (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
1058 schuur 1.1    CIMObjectPath *cop=(CIMObjectPath*)jOp;
1059               const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
1060            
1061               for (Uint32 i=0,s=akb.size(); i<s; i++) {
1062                  const String &n=akb[i].getName().getString();
1063                  const String &v=akb[i].getValue();
1064                  CIMKeyBinding::Type t=akb[i].getType();
1065                  CIMValue *cv;
1066                  switch (t) {
1067                  case CIMKeyBinding::NUMERIC:
1068                     cv=new CIMValue((Sint32)atol(v.getCString()));
1069                     break;
1070                  case CIMKeyBinding::STRING:
1071                     cv=new CIMValue(v);
1072                     break;
1073                  case CIMKeyBinding::BOOLEAN:
1074                     cv=new CIMValue((Boolean)(v.getCString()));
1075                     break;
1076                  case CIMKeyBinding::REFERENCE:
1077                     cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
1078                     break;
1079 schuur 1.1       default:
1080                     throwCIMException(jEnv,"+++ unsupported type: ");
1081                  }
1082                  
1083                  CIMProperty *cp;
1084                  if(t!=CIMKeyBinding::REFERENCE)
1085                     cp=new CIMProperty(n,*cv);
1086                  else cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
1087            
1088                  jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
1089                  jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1090               }
1091               return jVec;
1092            }
1093            
1094            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
1095                  (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jStr) {
1096               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1097               const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
1098               const char *strKeyName=jEnv->GetStringUTFChars(jStr,NULL);
1099               jstring retStr=NULL;
1100 schuur 1.1    for (Uint32 i=0,s=akb.size(); i<s; i++) {
1101                  const String &n=akb[i].getName().getString();
1102                  if (n==String(strKeyName)) {
1103                     retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
1104                     break;
1105                  }
1106               }
1107               jEnv->ReleaseStringUTFChars(jStr,strKeyName);
1108               return retStr;
1109            }
1110            
1111            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
1112                  (JNIEnv *jEnv, jobject jThs, jstring jStr) {
1113               const char *strCop=jEnv->GetStringUTFChars(jStr,NULL);
1114               CIMObjectPath *cop=new CIMObjectPath();
1115               cop->set(String(strCop));
1116               jEnv->ReleaseStringUTFChars(jStr,strCop);
1117               return (jint)cop;
1118            }
1119            
1120            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
1121 schuur 1.1       (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
1122               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1123               Array<CIMKeyBinding> akb;
1124               for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
1125                  jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
1126                  CIMProperty *cp=(CIMProperty*)jEnv->CallIntMethod(o,JMPIjvm::jv.PropertyCInst);
1127                  akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
1128               }
1129               cop->setKeyBindings(akb);
1130            }
1131            
1132            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
1133                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1134               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1135               CIMObjectPath *copl=new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
1136               return (jint)(void*)copl;
1137            }
1138            
1139            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
1140                  (JNIEnv *jEnv, jobject jThs, jint jOp) {
1141               CIMObjectPath *cop=(CIMObjectPath*)jOp;
1142 schuur 1.1    const String &ns=cop->toString();
1143               jstring str=jEnv->NewStringUTF(ns.getCString());
1144               return str;
1145            }
1146            
1147            
1148            // -------------------------------------
1149            // ---
1150            // -		CIMDataType
1151            // ---
1152            // -------------------------------------
1153            
1154            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
1155              (JNIEnv *jEnv, jobject jThs, jint type) {
1156              return (jint)(void*) new _dataType(type);
1157            }
1158            
1159            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
1160              (JNIEnv *jEnv, jobject jThs, jint type, jint size) {
1161              return (jint)(void*) new _dataType(type,size);
1162            }
1163 schuur 1.1 
1164            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
1165              (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef) {
1166               const char *ref=jEnv->GetStringUTFChars(jRef,NULL);
1167               jint cInst=(jint)(void*)new _dataType(type,String(ref));
1168               jEnv->ReleaseStringUTFChars(jRef,ref);
1169               return cInst;
1170            }
1171            
1172            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
1173              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1174               _dataType *dt=(_dataType*)jDt;
1175               return dt->_array==true;
1176            }
1177            
1178            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
1179              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1180               _dataType *dt=(_dataType*)jDt;
1181               return dt->_reference==true;
1182            }
1183            
1184 schuur 1.1 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
1185              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1186               _dataType *dt=(_dataType*)jDt;
1187               return dt->_reference==true;
1188            }
1189            
1190            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
1191              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1192               _dataType *dt=(_dataType*)jDt;
1193               return dt->_type;
1194            }
1195            
1196            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
1197              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1198               _dataType *dt=(_dataType*)jDt;
1199               return dt->_size;
1200            }
1201            
1202            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
1203              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1204               _dataType *dt=(_dataType*)jDt;
1205 schuur 1.1    jstring str=jEnv->NewStringUTF(dt->_refClass.getCString());
1206               return str;
1207            }
1208            
1209            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
1210              (JNIEnv *jEnv, jobject jThs, jint jDt) {
1211               _dataType *dt=(_dataType*)jDt;
1212               jstring str=NULL;
1213               if (dt->_type & 0x10) {
1214                  char tmp[32];
1215                  strcpy(tmp,jTypeToChars[dt->_type-0x10]);
1216                  strcat(tmp,"[]");
1217                  str=jEnv->NewStringUTF(tmp);
1218 schuur 1.5    }
1219 schuur 1.1    else if (dt->_type & 0x20) {
1220                  String tmp=dt->_refClass+" REF";
1221                  str=jEnv->NewStringUTF(tmp.getCString());
1222               }  
1223               else {
1224                  str=jEnv->NewStringUTF(jTypeToChars[dt->_type]);
1225               }
1226               return str;
1227            }
1228            
1229 schuur 1.5 CIMType toPtype(int jType) {
1230              if (jType>13) return (CIMType)14;
1231              return (CIMType)(jTypeToPType[jType]);
1232            }
1233 schuur 1.1 
1234            
1235            // -------------------------------------
1236            // ---
1237            // -		CIMProperty
1238            // ---
1239            // -------------------------------------
1240            
1241            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
1242                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1243               CIMProperty *cp=(CIMProperty*)jP;
1244               CIMValue *cv=new CIMValue(cp->getValue());
1245               return (jint)cv;
1246            }
1247            
1248 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
1249                  (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
1250               CIMProperty *p=new CIMProperty(CIMName(),CIMValue());
1251               return (jint)p;
1252            }
1253            
1254 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
1255                  (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
1256               try {
1257                  CIMValue *cv=(CIMValue*)jV;
1258                  const char *str=jEnv->GetStringUTFChars(jN,NULL);
1259                  CIMProperty *cp;
1260            
1261                  if (cv->getType()!=CIMTYPE_REFERENCE)
1262                     cp=new CIMProperty(String(str),*cv);
1263                  else {
1264                     if (!cv->isArray()) {
1265                        CIMObjectPath cop;
1266                        cv->get(cop);
1267                        cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
1268                     }
1269                     else {
1270                        throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
1271                     }
1272                  }
1273            
1274                  jEnv->ReleaseStringUTFChars(jN,str);
1275 schuur 1.1       return (jint)cp;
1276               }
1277               Catch(jEnv);
1278               return -1;
1279            }
1280            
1281            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
1282                  (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) {
1283               CIMProperty *cp=(CIMProperty*)jP;
1284               CIMValue *cv=(CIMValue*)jV;
1285               cp->setValue(*cv);
1286            }
1287            
1288            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
1289                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1290               CIMProperty *cp=(CIMProperty*)jP;
1291               return (jboolean)cp->isArray();
1292            }
1293            
1294            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
1295                  (JNIEnv *jEnv, jobject jThs, jint jP, jint jV) {
1296 schuur 1.1    CIMProperty *cp=(CIMProperty*)jP;
1297               CIMValue *cvin=(CIMValue*)jV;
1298               CIMValue cv=cp->getValue();
1299               if (cvin->isNull())
1300                  throwCIMException(jEnv,"+++ null cvin value ");
1301               if (!cv.isArray())
1302                  throwCIMException(jEnv,"+++ not an array ");
1303               if (cvin->getType()!=cv.getType())
1304                  throwCIMException(jEnv,"+++ type mismatch ");
1305               CIMType type=cv.getType();
1306               switch (type) {
1307               case CIMTYPE_BOOLEAN: {
1308                     Boolean bo;
1309                     cvin->get(bo);
1310                     Array<Boolean> boarr;
1311                     cv.get(boarr);
1312                     boarr.append(bo);
1313                  }
1314                  break;
1315               case CIMTYPE_UINT8: {
1316                     Uint8 u8;
1317 schuur 1.1          cvin->get(u8);
1318                     Array<Uint8> u8arr;
1319                     cv.get(u8arr);
1320                     u8arr.append(u8);
1321                  }
1322                  break;
1323               case CIMTYPE_SINT8: {
1324                     Sint8 s8;
1325                     cvin->get(s8);
1326                     Array<Sint8> s8arr;
1327                     cv.get(s8arr);
1328                     s8arr.append(s8);
1329                  }
1330                  break;
1331               case CIMTYPE_UINT16: {
1332                     Uint16 u16;
1333                     cvin->get(u16);
1334                     Array<Uint16> u16arr;
1335                     cv.get(u16arr);
1336                     u16arr.append(u16);
1337                  }
1338 schuur 1.1       break;
1339               case CIMTYPE_SINT16: {
1340                     Sint16 s16;
1341                     cvin->get(s16);
1342                     Array<Sint16> s16arr;
1343                     cv.get(s16arr);
1344                     s16arr.append(s16);
1345                  }
1346                  break;
1347               case CIMTYPE_UINT32: {
1348                     Uint32 u32;
1349                     cvin->get(u32);
1350                     Array<Uint32> u32arr;
1351                     cv.get(u32arr);
1352                     u32arr.append(u32);
1353                  }
1354                  break;
1355               case CIMTYPE_SINT32: {
1356                     Sint32 s32;
1357                     cvin->get(s32);
1358                     Array<Sint32> s32arr;
1359 schuur 1.1          cv.get(s32arr);
1360                     s32arr.append(s32);
1361                  }
1362                  break;
1363               case CIMTYPE_UINT64: {
1364                     Uint64 u64;
1365                     cvin->get(u64);
1366                     Array<Uint64> u64arr;
1367                     cv.get(u64arr);
1368                     u64arr.append(u64);
1369                  }
1370                  break;
1371               case CIMTYPE_SINT64: {
1372                     Sint64 s64;
1373                     cvin->get(s64);
1374                     Array<Sint64> s64arr;
1375                     cv.get(s64arr);
1376                     s64arr.append(s64);
1377                  }
1378                  break;
1379               case CIMTYPE_REAL32: {
1380 schuur 1.1          Real32 f;
1381                     cvin->get(f);
1382                     Array<Real32> farr;
1383                     cv.get(farr);
1384                     farr.append(f);
1385                  }
1386                  break;
1387               case CIMTYPE_REAL64: {
1388                     Real64 d;
1389                     cvin->get(d);
1390                     Array<Real64> darr;
1391                     cv.get(darr);
1392                     darr.append(d);
1393                  }
1394                  break;
1395               case CIMTYPE_STRING: {
1396                     String str;
1397                     cvin->get(str);
1398                     Array<String> strarr;
1399                     cv.get(strarr);
1400                     strarr.append(str);
1401 schuur 1.1       }
1402                  break;
1403               case CIMTYPE_REFERENCE: {
1404                     CIMObjectPath ref;
1405                     cvin->get(ref);
1406                     Array<CIMObjectPath> refarr;
1407                     cv.get(refarr);
1408                     refarr.append(ref);
1409                  }
1410                  break;
1411               default:
1412                  throwCIMException(jEnv,"+++ unsupported type ");
1413               }
1414            }
1415            
1416 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
1417                  (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ) {
1418               CIMProperty *cp=(CIMProperty*)jP;
1419               CIMQualifier *cq=(CIMQualifier*)jQ;
1420               cp->addQualifier(*cq);
1421            }
1422            
1423 schuur 1.1 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
1424                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1425               CIMProperty *cp=(CIMProperty*)jP;
1426               const String &n=cp->getName().getString();
1427               jstring str=jEnv->NewStringUTF(n.getCString());
1428               return str;
1429            }
1430            
1431 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
1432                  (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN) {
1433               CIMProperty *cp=(CIMProperty*)jP;
1434               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1435               cp->setName(CIMName(str));
1436               jEnv->ReleaseStringUTFChars(jN,str);
1437            }
1438            
1439 schuur 1.1 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
1440                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1441               CIMProperty *cp=(CIMProperty*)jP;
1442               return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
1443            }
1444            
1445            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
1446                 (JNIEnv *jEnv, jobject jThs, jint jP) {
1447               CIMProperty *cp=(CIMProperty*)jP;
1448               const String &n=cp->getReferenceClassName().getString();
1449               jstring str=jEnv->NewStringUTF(n.getCString());
1450               return str;
1451            }
1452            
1453            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
1454                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1455               CIMProperty *cp=(CIMProperty*)jP;
1456               String ref=cp->getReferenceClassName().getString();
1457               _dataType *type=new _dataType(pTypeToJType[cp->getType()],
1458                    cp->getArraySize(),
1459                    ref.size() ? true : false,
1460 schuur 1.1         false,
1461                    cp->isArray(),
1462                    ref,
1463                    true);
1464               return (jint)type;
1465            }
1466            
1467 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
1468                  (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt) {
1469               CIMProperty *cp=(CIMProperty*)jP;
1470               _dataType *dt=(_dataType*)jDt;
1471               CIMValue val;
1472               val.setNullValue(toPtype(dt->_type),dt->_array);
1473               CIMProperty *np=new CIMProperty(cp->getName(),val);
1474               delete cp;
1475               return (jint)np;
1476            }
1477            
1478 schuur 1.1 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
1479                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1480               CIMProperty *cp=(CIMProperty*)jP;
1481               const String &n=cp->getName().getString();
1482               jstring str=jEnv->NewStringUTF(n.getCString());
1483               return str;
1484            }
1485            
1486            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
1487                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1488               CIMProperty *cp=(CIMProperty*)jP;
1489               delete cp;
1490            }
1491 schuur 1.5 
1492            
1493            
1494            // -------------------------------------
1495            // ---
1496            // -     CIMQualifierType
1497            // ---
1498            // -------------------------------------
1499            
1500            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
1501                  (JNIEnv *jEnv, jobject jThs) {
1502               CIMQualifierDecl *qual = new CIMQualifierDecl();
1503               return (jint)(void*)qual;
1504            }
1505            
1506            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
1507                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1508               CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
1509               delete qt;
1510            }
1511            
1512 schuur 1.5 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
1513                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1514               CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
1515               const String &n=qt->getName().getString();
1516               jstring str=jEnv->NewStringUTF(n.getCString());
1517               return str;
1518            }
1519            
1520            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
1521                  (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN) {
1522               CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
1523               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1524               qt->setName(CIMName(str));
1525               jEnv->ReleaseStringUTFChars(jN,str);
1526            }
1527            
1528            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
1529                  (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) {
1530               CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
1531               CIMValue *cv=(CIMValue*)jV;
1532               qt->setValue(*cv);
1533 schuur 1.5 }
1534            
1535            
1536            
1537 schuur 1.1 
1538            
1539            // -------------------------------------
1540            // ---
1541            // -     CIMQualifier
1542            // ---
1543            // -------------------------------------
1544            
1545 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
1546                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
1547               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1548               CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue());
1549               jEnv->ReleaseStringUTFChars(jN,str);
1550               return (jint)(void*)qual;
1551            }
1552            
1553 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
1554                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1555               CIMQualifier *cq=(CIMQualifier*)jQ;
1556               delete cq;
1557            }
1558            
1559 schuur 1.5 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
1560                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1561               CIMQualifier *cq=(CIMQualifier*)jQ;
1562               const String &n=cq->getName().getString();
1563               jstring str=jEnv->NewStringUTF(n.getCString());
1564               return str;
1565            }
1566            
1567            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
1568                  (JNIEnv *jEnv, jobject jThs, jint jQ) {
1569               CIMQualifier *cq=(CIMQualifier*)jQ;
1570               CIMValue *cv=new CIMValue(cq->getValue());
1571               return (jint)cv;
1572            }
1573            
1574            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
1575                  (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) {
1576               CIMQualifier *cq=(CIMQualifier*)jQ;
1577               CIMValue *cv=(CIMValue*)jV;
1578               cq->setValue(*cv);
1579            }
1580 schuur 1.5 
1581 schuur 1.1 
1582            // -------------------------------------
1583            // ---
1584            // -		CIMDateTime
1585            // ---
1586            // -------------------------------------
1587            
1588            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
1589                  (JNIEnv *jEnv, jobject jThs, jstring jN) {
1590               const char *str=jEnv->GetStringUTFChars(jN,NULL);
1591               CIMDateTime *dt;
1592               if (strlen(str)==0)
1593                  dt=new CIMDateTime();
1594               else
1595                  dt=new CIMDateTime(String(str));
1596               jEnv->ReleaseStringUTFChars(jN,str);
1597               return (jint)dt;
1598            }
1599            
1600            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
1601                  (JNIEnv *jEnv, jobject jThs) {
1602 schuur 1.1    CIMDateTime *dt=new CIMDateTime(CIMDateTime::getCurrentDateTime ());
1603               return (jint)dt;
1604            }
1605            
1606            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
1607                  (JNIEnv *jEnv, jobject jThs, jint jC, jint jD) {
1608               CIMDateTime *ct = (CIMDateTime *) jC;
1609               CIMDateTime *dt = (CIMDateTime *) jD;
1610               return (jboolean)(ct->getDifference(*ct, *dt)>0);
1611            }
1612            
1613            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
1614                  (JNIEnv *jEnv, jobject jThs, jint jDT) {
1615               CIMDateTime *cdt = (CIMDateTime *) jDT;
1616               delete cdt;
1617            }
1618            
1619            
1620            // -------------------------------------
1621            // ---
1622            // -		CIMMethod
1623 schuur 1.1 // ---
1624            // -------------------------------------
1625            
1626            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
1627                  (JNIEnv *jEnv, jobject jThs, jint jM) {
1628               CIMMethod *cm=(CIMMethod*)jM;
1629               return (jint)cm->getType();
1630            }
1631            
1632            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
1633                  (JNIEnv *jEnv, jobject jThs, jint jM) {
1634               CIMMethod *cm=(CIMMethod*)jM;
1635               delete cm;
1636            }
1637            
1638            
1639            // -------------------------------------
1640            // ---
1641            // -		CIMValue
1642            // ---
1643            // -------------------------------------
1644 schuur 1.1 
1645            
1646            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
1647                  (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned) {
1648               CIMValue *cv=NULL;
1649               if (notSigned) cv=new CIMValue((Uint8)jb);
1650               else cv=new CIMValue((Sint8)jb);
1651               return (jint)cv;
1652            }
1653            
1654            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
1655                  (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned) {
1656               CIMValue *cv=NULL;
1657               if (notSigned) cv=new CIMValue((Uint16)js);
1658               else cv=new CIMValue((Sint16)js);
1659               return (jint)cv;
1660            }
1661            
1662            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue_makeInt
1663                  (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned) {
1664               CIMValue *cv=NULL;
1665 schuur 1.1    if (notSigned) cv=new CIMValue((Uint32)ji);
1666               else cv=new CIMValue((Sint32)ji);
1667               return (jint)cv;
1668            }
1669            
1670            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
1671                  (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned) {
1672               CIMValue *cv=NULL;
1673               if (notSigned) cv=new CIMValue((Uint64)jl);
1674               else cv=new CIMValue((Sint64)jl);
1675               return (jint)cv;
1676            }
1677            
1678            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
1679                  (JNIEnv *jEnv, jobject jThs, jfloat jF) {
1680               CIMValue *cv=new CIMValue(jF);
1681               return (jint)cv;
1682            }
1683            
1684            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
1685                  (JNIEnv *jEnv, jobject jThs, jdouble jD) {
1686 schuur 1.1    CIMValue *cv=new CIMValue(jD);
1687               return (jint)cv;
1688            }
1689            
1690            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
1691                  (JNIEnv *jEnv, jobject jThs, jstring jS) {
1692               const char *str=jEnv->GetStringUTFChars(jS,NULL);
1693               CIMValue *cv=new CIMValue(String(str));
1694               jEnv->ReleaseStringUTFChars(jS,str);
1695               return (jint)cv;
1696            }
1697            
1698            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1ref
1699                  (JNIEnv *jEnv, jobject jThs, jint jR) {
1700               CIMObjectPath *ref=(CIMObjectPath*)jR;
1701               CIMValue *cv=new CIMValue(*ref);
1702               return (jint)cv;
1703            }
1704            
1705            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
1706                  (JNIEnv *jEnv, jobject jThs, jint jDT) {
1707 schuur 1.1    CIMDateTime *dt=(CIMDateTime*)jDT;
1708               CIMValue *cv=new CIMValue(*dt);
1709               return (jint)cv;
1710            }
1711            
1712            JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
1713                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1714               CIMValue *cv=(CIMValue*)jP;
1715               return (jboolean)cv->isArray();
1716            }
1717            
1718            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
1719                  (JNIEnv *jEnv, jobject jThs, jboolean jB) {
1720               CIMValue *cv=new CIMValue((Boolean)jB);
1721               return (jint)cv;
1722            }
1723            
1724            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
1725                  (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned) {
1726               CIMValue *cv=NULL;
1727               jboolean b;
1728 schuur 1.1    jsize len=jEnv->GetArrayLength(jshortA);
1729               jshort* jsA=jEnv->GetShortArrayElements(jshortA,&b);
1730               if (notSigned) {
1731                  Array<Uint8> u8;
1732                  for (jsize i=0;i<len;i++)
1733                     u8.append((Uint8)jsA[i]);
1734                  cv=new CIMValue(u8);
1735               }
1736               else {
1737                  Array<Sint8> s8;
1738                  for (jsize i=0;i<len;i++)
1739                     s8.append((Sint8)jsA[i]);
1740                  cv=new CIMValue(s8);
1741               }
1742               return (jint)(void*)cv;
1743            }
1744            
1745            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
1746                  (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned) {
1747               CIMValue *cv=NULL;
1748               jboolean b;
1749 schuur 1.1    jsize len=jEnv->GetArrayLength(jintA);
1750               jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
1751               if (notSigned) {
1752                  Array<Uint16> u16;
1753                  for (jsize i=0;i<len;i++)
1754                     u16.append((Uint16)jiA[i]);
1755                  cv=new CIMValue(u16);
1756               }
1757               else {
1758                  Array<Sint16> s16;
1759                  for (jsize i=0;i<len;i++)
1760                     s16.append((Sint16)jiA[i]);
1761                  cv=new CIMValue(s16);
1762               }
1763               return (jint)(void*)cv;
1764            }
1765            
1766            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
1767                  (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
1768               CIMValue *cv=NULL;
1769               jboolean b;
1770 schuur 1.1    jsize len=jEnv->GetArrayLength(jlongA);
1771               jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
1772               if (notSigned) {
1773                  Array<Uint32> u32;
1774                  for (jsize i=0;i<len;i++)
1775                     u32.append((Uint32)jlA[i]);
1776                  cv=new CIMValue(u32);
1777               }
1778               else {
1779                  Array<Sint32> s32;
1780                  for (jsize i=0;i<len;i++)
1781                     s32.append((Sint32)jlA[i]);
1782                  cv=new CIMValue(s32);
1783               }
1784               return (jint)(void*)cv;
1785            }
1786            
1787            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
1788                  (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
1789               CIMValue *cv=NULL;
1790               jboolean b;
1791 schuur 1.1    jsize len=jEnv->GetArrayLength(jlongA);
1792               jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
1793               if (notSigned) {
1794                  Array<Uint64> u64;
1795                  for (jsize i=0;i<len;i++)
1796                     u64.append((Uint64)jlA[i]);
1797                  cv=new CIMValue(u64);
1798               }
1799               else {
1800                  Array<Sint64> s64;
1801                  for (jsize i=0;i<len;i++)
1802                     s64.append((Sint64)jlA[i]);
1803                  cv=new CIMValue(s64);
1804               }
1805               return (jint)(void*)cv;
1806            }
1807            
1808            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
1809                  (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA) {
1810               CIMValue *cv=NULL;
1811               jboolean b;
1812 schuur 1.1    jsize len=jEnv->GetArrayLength(jstringA);
1813               Array<String> strA;
1814            
1815               for (jsize i=0;i<len;i++) {
1816                  jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);
1817                  const char *str=jEnv->GetStringUTFChars(jsA,NULL);
1818                  strA.append(String(str));
1819                  jEnv->ReleaseStringUTFChars(jsA,str);
1820               }
1821            
1822               cv=new CIMValue(strA);
1823               return (jint)(void*)cv;
1824            }
1825            
1826            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
1827                  (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA) {
1828               CIMValue *cv=NULL;
1829               jboolean b;
1830               jsize len=jEnv->GetArrayLength(jboolA);
1831               jboolean* jbA=jEnv->GetBooleanArrayElements(jboolA,&b);
1832               Array<Boolean> bA;
1833 schuur 1.1    for (jsize i=0;i<len;i++)
1834                  bA.append((Boolean)jbA[i]);
1835               cv=new CIMValue(bA);
1836               return (jint)(void*)cv;
1837            }
1838            
1839            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1refArray
1840                  (JNIEnv *jEnv, jobject jThs, jintArray jintA) {
1841               CIMValue *cv=NULL;
1842               jboolean b;
1843               jsize len=jEnv->GetArrayLength(jintA);
1844               jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
1845               Array<CIMObjectPath> cA;
1846               for (jsize i=0;i<len;i++)
1847                  cA.append(*((CIMObjectPath*)jiA[i]));
1848               cv=new CIMValue(cA);
1849               return (jint)(void*)cv;
1850            }
1851            
1852            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
1853                  (JNIEnv *jEnv, jobject jThs, jint jP) {
1854 schuur 1.1    CIMValue *cv=(CIMValue*)jP;
1855 schuur 1.5    return (jint)pTypeToJType[cv->getType()];
1856            //   return (jint)cv->getType();
1857 schuur 1.1 }
1858            
1859            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
1860                  (JNIEnv *jEnv, jobject jThs, jint jV) {
1861               CIMValue *cv=(CIMValue*)jV;
1862               return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
1863            }
1864            
1865            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
1866                  (JNIEnv *jEnv, jobject jThs, jint jV) {
1867               CIMValue *cv=(CIMValue*)jV;
1868               if (cv->isNull())
1869                  return NULL;
1870               CIMType type=cv->getType();
1871            
1872               if (!cv->isArray()) {
1873                  switch (type) {
1874                  case CIMTYPE_BOOLEAN:
1875                     Boolean bo;
1876                     cv->get(bo);
1877                     return jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo);
1878 schuur 1.1          break;
1879                  case CIMTYPE_SINT8:
1880                     Sint8 s8;
1881                     cv->get(s8);
1882                     return jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8);
1883                     break;
1884                  case CIMTYPE_UINT8:
1885                     Uint8 u8;
1886                     cv->get(u8);
1887                     return jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8);
1888                     break;
1889                  case CIMTYPE_SINT16:
1890                     Sint16 s16;
1891                     cv->get(s16);
1892                     return jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16);
1893                     break;
1894                  case CIMTYPE_UINT16:
1895                     Uint16 u16;
1896                     cv->get(u16);
1897                     return jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16);
1898                     break;
1899 schuur 1.1       case CIMTYPE_SINT32:
1900                     Sint32 s32;
1901                     cv->get(s32);
1902                     return jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32);
1903                     break;
1904                  case CIMTYPE_UINT32:
1905                     Uint32 u32;
1906                     cv->get(u32);
1907                     return jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32);
1908                     break;
1909                  case CIMTYPE_SINT64:
1910                     Sint64 s64;
1911                     cv->get(s64);
1912                     return jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64);
1913                     break;
1914                  case CIMTYPE_UINT64: {
1915                        Uint64 u64;
1916                        cv->get(u64);
1917                        jobject big=jEnv->CallStaticObjectMethod(classRefs[14],staticMethodIDs[0],u64);
1918                        return jEnv->NewObject(classRefs[11],instanceMethodIDs[11],big);
1919                     }
1920 schuur 1.1          break;
1921                  case CIMTYPE_REAL32:
1922                     float f;
1923                     cv->get(f);
1924                     return jEnv->NewObject(classRefs[6],instanceMethodIDs[6],f);
1925                     break;
1926                  case CIMTYPE_REAL64:
1927                     double d;
1928                     cv->get(d);
1929                     return jEnv->NewObject(classRefs[7],instanceMethodIDs[7],d);
1930                     break;
1931                  case CIMTYPE_STRING: {
1932                        String s;
1933                        jstring str;
1934                        cv->get(s);
1935                        str=jEnv->NewStringUTF(s.getCString());
1936                        return str;
1937                     }
1938                     break;
1939                  case CIMTYPE_REFERENCE:  {
1940                        CIMObjectPath ref;
1941 schuur 1.1             cv->get(ref);
1942                        return jEnv->NewObject(classRefs[12],instanceMethodIDs[12],
1943                           (jint)new CIMObjectPath(ref));
1944                     }
1945                     break;
1946                  case CIMTYPE_CHAR16:
1947                     throwCIMException(jEnv,"+++ Char16 not yet supported");
1948                     break;
1949                  case CIMTYPE_DATETIME: {
1950                        CIMDateTime dt;
1951                        cv->get(dt);
1952                        return jEnv->NewObject(classRefs[24],instanceMethodIDs[35],
1953                           (jint)new CIMDateTime(dt));
1954                     }
1955            //         throwCIMException(jEnv,"+++ DateTime not yet supported");
1956                     break;
1957                  default:
1958                  	throwCIMException(jEnv,"+++ unsupported type: ");
1959                  }
1960               }
1961            
1962 schuur 1.1    else {
1963                  switch (type) {
1964                  case CIMTYPE_BOOLEAN: {
1965                        Array<Boolean> bo;
1966                        cv->get(bo);
1967                        int s=bo.size();
1968                        jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[1],0);
1969                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i, 
1970                              jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo[i]));
1971                        return jbooleanA;
1972                     }
1973                     break;
1974                  case CIMTYPE_SINT8: {
1975                        Array<Sint8> s8;
1976                        cv->get(s8);
1977                        int s=s8.size();
1978                        jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[2],0);
1979                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i, 
1980                           jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8[i]));
1981                        return jbyteA;
1982                     }
1983 schuur 1.1          break;
1984                  case CIMTYPE_UINT8: {
1985                        Array<Uint8> u8;
1986                        cv->get(u8);
1987                        int s=u8.size();
1988                        jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[8],0);
1989                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i, 
1990                           jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8[i]));
1991                        return jshortA;
1992                     }
1993                     break;
1994                  case CIMTYPE_SINT16: {
1995                        Array<Sint16> s16;
1996                        cv->get(s16);
1997                        int s=s16.size();
1998                        jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[3],0);
1999                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i, 
2000                           jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16[i]));
2001                        return jshortA;
2002                     }
2003                     break;
2004 schuur 1.1       case CIMTYPE_UINT16: {
2005                        Array<Uint16> u16;
2006                        cv->get(u16);
2007                        int s=u16.size();
2008                        jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[9],0);
2009                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i, 
2010                           jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16[i]));
2011                        return jintA;
2012                     }
2013                     break;
2014                  case CIMTYPE_SINT32: {
2015                        Array<Sint32> s32;
2016                        cv->get(s32);
2017                        int s=s32.size();
2018                        jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[4],0);
2019                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i, 
2020                           jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32[i]));
2021                        return jintA;
2022                     }
2023                     break;
2024                  case CIMTYPE_UINT32: {
2025 schuur 1.1             Array<Uint32> u32;
2026                        cv->get(u32);
2027                        int s=u32.size();
2028                        jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[10],0);
2029                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i, 
2030                           jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32[i]));
2031                        return jlongA;
2032                     }
2033                     break;
2034                  case CIMTYPE_SINT64: {
2035                        Array<Sint64> s64;
2036                        cv->get(s64);
2037                        int s=s64.size();
2038                        jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[5],0);
2039                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i, 
2040                           jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64[i]));
2041                        return jlongA;
2042                     }
2043                     break;
2044                  case CIMTYPE_UINT64:
2045                     throwCIMException(jEnv,"+++ UnisgnetInt64 not yet supported");
2046 schuur 1.1          break;
2047                  case CIMTYPE_REAL32: {
2048                        Array<Real32> r32;
2049                        cv->get(r32);
2050                        int s=r32.size();
2051                        jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[6],0);
2052                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i, 
2053                           jEnv->NewObject(classRefs[6],instanceMethodIDs[6],r32[i]));
2054                        return jfloatA;
2055                     }
2056                     break;
2057                  case CIMTYPE_REAL64: {
2058                        Array<Real64> r64;
2059                        cv->get(r64);
2060                        int s=r64.size();
2061                        jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[7],0);
2062                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i, 
2063                           jEnv->NewObject(classRefs[7],instanceMethodIDs[7],r64[i]));
2064                        return jdoubleA;
2065                     }
2066                     break;
2067 schuur 1.1       case CIMTYPE_STRING: {
2068                        Array<String> str;
2069                        cv->get(str);
2070                        int s=str.size();
2071                        jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[22],0);
2072                        for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i, 
2073                           jEnv->NewStringUTF(str[i].getCString()));
2074                        return jstringA;
2075                     }
2076                     break;
2077                  case CIMTYPE_REFERENCE:
2078                     throwCIMException(jEnv,"+++ Reference not yet supported");
2079                     break;
2080                  case CIMTYPE_CHAR16:
2081                     throwCIMException(jEnv,"+++ Char16 not yet supported");
2082                     break;
2083                  case CIMTYPE_DATETIME:
2084                     throwCIMException(jEnv,"+++ DateTime not yet supported");
2085                     break;
2086                  default:
2087                  throwCIMException(jEnv,"+++ unsupported type: ");
2088 schuur 1.1       }
2089               }
2090               return NULL;
2091            }
2092            
2093            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
2094                  (JNIEnv *jEnv, jobject jThs, jint jV) {
2095               CIMValue *cv=(CIMValue*)jV;
2096               delete cv;
2097            }
2098            
2099            
2100            // -------------------------------------
2101            // ---
2102            // -		CIMNameSpace
2103            // ---
2104            // -------------------------------------
2105            
2106            _nameSpace::_nameSpace() {
2107               port_=0;
2108               hostName_=System::getHostName();
2109 schuur 1.1    nameSpace_="root/cimv2";
2110            }
2111            
2112            _nameSpace::_nameSpace(String hn) {
2113               port_=0;
2114               hostName_=hn;
2115               nameSpace_="root/cimv2";
2116            }
2117            
2118            _nameSpace::_nameSpace(String hn, String ns) {
2119                port_=0;
2120                hostName_=hn;
2121                nameSpace_=ns;
2122            }
2123            
2124            int _nameSpace::port() {
2125               if (port_) return port_;
2126               port_=5988;
2127               if (hostName_.subString(0,7)=="http://") {
2128                  protocol_="http://";
2129                  hostName_=hostName_.subString(7);
2130 schuur 1.1    }
2131               Sint32 p=hostName_.reverseFind(':');
2132               if (p>=0) {
2133                  if (isdigit(hostName_[p+1]))
2134                     port_=atoi(hostName_.subString(p+1).getCString());
2135                  hostName_.remove(p);
2136               }
2137               return port_;
2138            }
2139            
2140            String _nameSpace::hostName() {
2141               port();
2142               return hostName_;
2143            }
2144            
2145            String _nameSpace::nameSpace() {
2146               return nameSpace_;
2147            }
2148            
2149            
2150            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
2151 schuur 1.1   (JNIEnv *jEnv, jobject jThs) {
2152              return (jint)(void*) new _nameSpace();
2153            }
2154            
2155            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
2156              (JNIEnv *jEnv, jobject jThs, jstring jHn) {
2157               const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
2158               jint cInst=(jint)(void*)new _nameSpace(hn);
2159               jEnv->ReleaseStringUTFChars(jHn,hn);
2160               return cInst;
2161            }
2162            
2163            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
2164              (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs) {
2165               const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
2166               const char *ns=jEnv->GetStringUTFChars(jNs,NULL);
2167               jint cInst=(jint)(void*)new _nameSpace(String(hn),String(ns));
2168               jEnv->ReleaseStringUTFChars(jHn,hn);
2169               jEnv->ReleaseStringUTFChars(jNs,ns);
2170               return cInst;
2171            }
2172 schuur 1.1 
2173            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
2174              (JNIEnv *jEnv, jobject jThs, jint jNs) {
2175               _nameSpace *cNs=(_nameSpace*)jNs;
2176               const String &hn=cNs->hostName_;
2177               jstring str=jEnv->NewStringUTF(hn.getCString());
2178               return str;
2179            }
2180            
2181            JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
2182              (JNIEnv *jEnv, jobject jThs, jint jNs) {
2183               _nameSpace *cNs=(_nameSpace*)jNs;
2184               const String &ns=cNs->nameSpace_;
2185               jstring str=jEnv->NewStringUTF(ns.getCString());
2186               return str;
2187            }
2188            
2189            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
2190              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn) {
2191               _nameSpace *cNs=(_nameSpace*)jNs;
2192               const char *str=jEnv->GetStringUTFChars(jHn,NULL);
2193 schuur 1.1    cNs->port_=0;
2194               cNs->hostName_=str;
2195               jEnv->ReleaseStringUTFChars(jHn,str);
2196            }
2197            
2198            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
2199              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN) {
2200               _nameSpace *cNs=(_nameSpace*)jN;
2201               const char *str=jEnv->GetStringUTFChars(jN,NULL);
2202               cNs->nameSpace_=str;
2203               jEnv->ReleaseStringUTFChars(jN,str);
2204            }
2205            
2206            
2207            // -------------------------------------
2208            // ---
2209            // -		Enumerators
2210            // ---
2211            // -------------------------------------
2212            
2213 schuur 1.4 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
2214              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2215               Array<CIMClass> *enm=(Array<CIMClass>*)jEnum;
2216               return (jint) new CIMClass((*enm)[pos]);
2217            }
2218            
2219            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
2220              (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2221               Array<CIMClass> *enm=(Array<CIMClass>*)jEnum;
2222               return enm->size();
2223            }
2224            
2225 schuur 1.1 
2226            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
2227              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2228               Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
2229               return (jint) new CIMInstance((*enm)[pos]);
2230            }
2231            
2232            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
2233              (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2234               Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
2235               return enm->size();
2236            }
2237            
2238            
2239            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
2240              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2241               Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
2242               return (jint) new CIMObjectPath((*enm)[pos]);
2243            }
2244            
2245            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
2246 schuur 1.1   (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2247               Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
2248               return enm->size();
2249            }
2250            
2251 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
2252              (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2253               Array<CIMQualifierDecl> *enm=(Array<CIMQualifierDecl>*)jEnum;
2254               return (jint) new CIMQualifierDecl((*enm)[pos]);
2255            }
2256            
2257            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
2258              (JNIEnv *jEnv, jobject jThs, jint jEnum) {
2259               Array<CIMQualifierDecl> *enm=(Array<CIMQualifierDecl>*)jEnum;
2260               return enm->size();
2261            }
2262            
2263 schuur 1.1 // -------------------------------------
2264            // ---
2265            // -		CIMClient
2266            // ---
2267            // -------------------------------------
2268            
2269 schuur 1.5 void checkNs(CIMObjectPath *cop, jint jNs) {
2270               if (cop->getNameSpace().isNull()) {
2271                  _nameSpace *ns=(_nameSpace*)jNs;
2272                  cop->setNameSpace(CIMNamespaceName(ns->nameSpace()));
2273               }
2274            }
2275            
2276 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
2277              (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw) {
2278               _nameSpace *cNs=(_nameSpace*)jNs;
2279 schuur 1.5 
2280 schuur 1.1    const char *un=jEnv->GetStringUTFChars(jUn,NULL);
2281               const char *pw=jEnv->GetStringUTFChars(jPw,NULL);
2282 schuur 1.5 
2283 schuur 1.1    try {
2284 schuur 1.5       JMPIjvm::cacheIDs(jEnv);
2285 schuur 1.1       CIMClient *cc=new CIMClient();
2286                  cc->connect(cNs->hostName(),cNs->port(),un,pw);
2287                  jEnv->ReleaseStringUTFChars(jUn,un);
2288                  jEnv->ReleaseStringUTFChars(jPw,pw);
2289                  return (jint)(void*)cc;
2290               }
2291 schuur 1.5    Catch(jEnv);
2292 schuur 1.1    return 0;
2293            }
2294            
2295            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
2296              (JNIEnv *jEnv, jobject jThs, jint jCc) {
2297               CIMClient *cCc=(CIMClient*)jCc;
2298               try {
2299                  cCc->disconnect();
2300               }
2301 schuur 1.5    Catch(jEnv);
2302 schuur 1.1 }
2303 schuur 1.5 
2304 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
2305 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo) {
2306 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2307               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2308               try {
2309 schuur 1.5       checkNs(cop,jNs);
2310 schuur 1.1       CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo);
2311 schuur 1.3       return (jint) new CIMClass(cls);
2312 schuur 1.1    }
2313 schuur 1.5    Catch(jEnv);
2314 schuur 1.1    return 0;
2315            }
2316 schuur 1.3 
2317            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
2318 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
2319 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2320               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2321               try {
2322 schuur 1.5       checkNs(cop,jNs);
2323 schuur 1.3       cCc->deleteClass(cop->getNameSpace(),cop->getClassName());
2324               }
2325 schuur 1.5    Catch(jEnv);
2326 schuur 1.3    return;
2327            }
2328            
2329            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
2330 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl) {
2331 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2332               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2333               CIMClass *cl=(CIMClass*)jCl;
2334            
2335               try {
2336                  cCc->createClass(cop->getNameSpace(),*cl);
2337               }
2338 schuur 1.5    Catch(jEnv);
2339 schuur 1.3    return;
2340            }
2341            
2342            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
2343 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl) {
2344 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2345               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2346 schuur 1.3    CIMClass *cl=(CIMClass*)jCl;
2347            
2348 schuur 1.1    try {
2349 schuur 1.5      checkNs(cop,jNs);
2350 schuur 1.3      cCc->modifyClass(cop->getNameSpace(),*cl);
2351 schuur 1.1    }
2352 schuur 1.5    Catch(jEnv);
2353 schuur 1.3    return ;
2354 schuur 1.1 }
2355 schuur 1.3 
2356            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses
2357 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo) {
2358 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2359               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2360               try {
2361 schuur 1.5       checkNs(cop,jNs);
2362 schuur 1.3       Array<CIMClass> enm=cCc->enumerateClasses(
2363 schuur 1.1          cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo);
2364 schuur 1.3       return (jint) new Array<CIMClass>(enm);
2365 schuur 1.1    }
2366 schuur 1.5    Catch(jEnv);
2367 schuur 1.1    return 0;
2368            }
2369            
2370 schuur 1.3 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
2371 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) {
2372 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2373               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2374 schuur 1.3    CIMNamespaceName ns=cop->getNameSpace();
2375 schuur 1.1    try {
2376 schuur 1.5       checkNs(cop,jNs);
2377 schuur 1.3       Array<CIMName> enm=cCc->enumerateClassNames(
2378                     ns,cop->getClassName(),(Boolean)deep);
2379                  Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
2380                  for (int i=0,m=enm.size(); i<m; i++) {
2381                     enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
2382                  }
2383                  return (jint)enmop;
2384               }
2385 schuur 1.5    Catch(jEnv);
2386 schuur 1.3    return 0;
2387            }
2388            
2389            
2390            
2391            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
2392 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo) {
2393 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2394               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2395 schuur 1.5 
2396 schuur 1.3    try {
2397 schuur 1.5       checkNs(cop,jNs);
2398 schuur 1.3       CIMInstance inst=cCc->getInstance(cop->getNameSpace(),*cop,(Boolean)lo);
2399                  return (jint) new CIMInstance(inst);
2400 schuur 1.1    }
2401 schuur 1.5    Catch(jEnv);
2402 schuur 1.1    return 0;
2403            }
2404            
2405 schuur 1.3 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
2406 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
2407 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2408               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2409               try {
2410 schuur 1.5       checkNs(cop,jNs);
2411 schuur 1.3       cCc->deleteInstance(cop->getNameSpace(),*cop);
2412               }
2413 schuur 1.5    Catch(jEnv);
2414 schuur 1.3    return;
2415            }
2416            
2417 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
2418 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi) {
2419 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2420               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2421               CIMInstance *ci=(CIMInstance*)jCi;
2422 schuur 1.3 
2423 schuur 1.1    try {
2424 schuur 1.5       checkNs(cop,jNs);
2425 schuur 1.1       CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
2426 schuur 1.3       return (jint) new CIMObjectPath(obj);
2427 schuur 1.1    }
2428 schuur 1.5    Catch(jEnv);
2429               return 0;
2430 schuur 1.1 }
2431 schuur 1.3 
2432 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setInstance
2433 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi) {
2434 schuur 1.1    CIMClient *cCc=(CIMClient*)jCc;
2435               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2436               CIMInstance *ci=(CIMInstance*)jCi;
2437 schuur 1.3 
2438 schuur 1.1    try {
2439 schuur 1.5      checkNs(cop,jNs);
2440 schuur 1.1      cCc->modifyInstance(cop->getNameSpace(),*ci);
2441               }
2442 schuur 1.5    Catch(jEnv);
2443 schuur 1.1    return ;
2444 schuur 1.3 }
2445            
2446            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
2447 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo) {
2448 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2449               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2450               try {
2451 schuur 1.5       checkNs(cop,jNs);
2452 schuur 1.3       Array<CIMInstance> enm=cCc->enumerateInstances(
2453                     cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo);
2454                  return (jint) new Array<CIMInstance>(enm);
2455               }
2456 schuur 1.5    Catch(jEnv);
2457 schuur 1.3    return 0;
2458            }
2459            
2460            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
2461 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) {
2462 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2463               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2464               try {
2465 schuur 1.5       checkNs(cop,jNs);
2466 schuur 1.3       Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
2467                     cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
2468                  return (jint) new Array<CIMObjectPath>(enm);
2469               }
2470 schuur 1.5    Catch(jEnv);
2471               return 0;
2472            }
2473            
2474            
2475            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
2476              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
2477               CIMClient *cCc=(CIMClient*)jCc;
2478               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2479               try {
2480                  checkNs(cop,jNs);
2481                  CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName()));
2482                  return (jint)val;
2483 schuur 1.3    }
2484 schuur 1.5    Catch(jEnv);
2485 schuur 1.3    return 0;
2486            }
2487            
2488 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
2489              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
2490               CIMClient *cCc=(CIMClient*)jCc;
2491               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2492               try {
2493                  checkNs(cop,jNs);
2494                  cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName());
2495               }
2496               Catch(jEnv);
2497               return;
2498            }
2499            
2500            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
2501              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ) {
2502               CIMClient *cCc=(CIMClient*)jCc;
2503               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2504               CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
2505               try {
2506                  checkNs(cop,jNs);
2507                  cCc->setQualifier(cop->getNameSpace(),*qt);
2508               }
2509 schuur 1.5    Catch(jEnv);
2510               return;
2511            }
2512            
2513 schuur 1.1 
2514            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
2515 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn) {
2516 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2517               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2518               const char *str=jEnv->GetStringUTFChars(jPn,NULL);
2519               CIMName pName(str);
2520               jEnv->ReleaseStringUTFChars(jPn,str);
2521               try {
2522 schuur 1.5       checkNs(cop,jNs);
2523 schuur 1.3       CIMValue *val=new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
2524                  return (jint)val;
2525               }
2526 schuur 1.5    Catch(jEnv);
2527 schuur 1.3    return 0;
2528            }
2529 schuur 1.5 
2530 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
2531 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV) {
2532 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2533               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2534               CIMValue *val=(CIMValue*)jCop;
2535               const char *str=jEnv->GetStringUTFChars(jPn,NULL);
2536               CIMName pName(str);
2537               jEnv->ReleaseStringUTFChars(jPn,str);
2538               try {
2539 schuur 1.5       checkNs(cop,jNs);
2540 schuur 1.3       cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
2541               }
2542 schuur 1.5    Catch(jEnv);
2543 schuur 1.3    return;
2544            }
2545            
2546            JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
2547 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut) {
2548 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2549               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2550               const char *str=jEnv->GetStringUTFChars(jMn,NULL);
2551               CIMName method(str);
2552               jEnv->ReleaseStringUTFChars(jMn,str);
2553            
2554               Array<CIMParamValue> in;
2555               Array<CIMParamValue> out;
2556            
2557               for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i<m; i++) {
2558                   JMPIjvm::checkException(jEnv);
2559                   jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
2560                   JMPIjvm::checkException(jEnv);
2561                   CIMProperty *p=((CIMProperty*)jEnv->CallIntMethod(jProp,JMPIjvm::jv.PropertyCInst));
2562                   JMPIjvm::checkException(jEnv);
2563                   in.append(CIMParamValue(p->getName().getString(),p->getValue()));
2564               }
2565               try {
2566 schuur 1.5       checkNs(cop,jNs);
2567 schuur 1.3       CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
2568                  return (jint)val;
2569            
2570                  for (int i=0,m=out.size(); i<m; i++) {
2571                     const CIMParamValue & parm=out[i];
2572            	 const CIMValue v=parm.getValue();
2573                     CIMProperty *p=new CIMProperty(parm.getParameterName(),v,v.getArraySize());
2574                     jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,(jint)p);
2575                     jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
2576                  }
2577               }
2578 schuur 1.5    Catch(jEnv);
2579 schuur 1.3    return 0;
2580            }
2581            
2582            
2583 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
2584 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl) {
2585 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2586               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2587            
2588               const char *str=jEnv->GetStringUTFChars(jQuery,NULL);
2589               String query(str);
2590               jEnv->ReleaseStringUTFChars(jQuery,str);
2591               str=jEnv->GetStringUTFChars(jQl,NULL);
2592               String ql(str);
2593               jEnv->ReleaseStringUTFChars(jQl,str);
2594            
2595               try {
2596 schuur 1.5       checkNs(cop,jNs);
2597 schuur 1.3       Array<CIMObject> enm=cCc->execQuery(
2598                     cop->getNameSpace(),query,ql);
2599                  Array<CIMInstance> *enmInst=new Array<CIMInstance>();
2600                  for (int i=0,m=enm.size(); i<m; i++) {
2601                     enmInst->append(CIMInstance(enm[i]));
2602                  }
2603                  return (jint)enmInst;
2604               }
2605 schuur 1.5    Catch(jEnv);
2606 schuur 1.3    return 0;
2607            }
2608            
2609 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
2610 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
2611 schuur 1.3    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole) {
2612               CIMClient *cCc=(CIMClient*)jCc;
2613               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2614            
2615               const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
2616               CIMName assocClass(str);
2617               jEnv->ReleaseStringUTFChars(jAssocClass,str);
2618               str=jEnv->GetStringUTFChars(jResultClass,NULL);
2619               CIMName resultClass(str);
2620               jEnv->ReleaseStringUTFChars(jResultClass,str);
2621               str=jEnv->GetStringUTFChars(jRole,NULL);
2622               String role(str);
2623               jEnv->ReleaseStringUTFChars(jRole,str);
2624               str=jEnv->GetStringUTFChars(jResultRole,NULL);
2625               String resultRole(str);
2626               jEnv->ReleaseStringUTFChars(jResultRole,str);
2627            
2628               try {
2629 schuur 1.5       checkNs(cop,jNs);
2630 schuur 1.3       Array<CIMObjectPath> enm=cCc->associatorNames(
2631                     cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
2632                  return (jint) new Array<CIMObjectPath>(enm);
2633               }
2634 schuur 1.5    Catch(jEnv);
2635 schuur 1.3    return 0;
2636            }
2637            
2638 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
2639 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
2640 schuur 1.3    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
2641 schuur 1.1    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray propertyList) {
2642 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2643               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2644            
2645               const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
2646               CIMName assocClass(str);
2647               jEnv->ReleaseStringUTFChars(jAssocClass,str);
2648               str=jEnv->GetStringUTFChars(jResultClass,NULL);
2649               CIMName resultClass(str);
2650               jEnv->ReleaseStringUTFChars(jResultClass,str);
2651               str=jEnv->GetStringUTFChars(jRole,NULL);
2652               String role(str);
2653               jEnv->ReleaseStringUTFChars(jRole,str);
2654               str=jEnv->GetStringUTFChars(jResultRole,NULL);
2655               String resultRole(str);
2656               jEnv->ReleaseStringUTFChars(jResultRole,str);
2657            
2658               try {
2659 schuur 1.5       checkNs(cop,jNs);
2660 schuur 1.3       Array<CIMObject> enm=cCc->associators(
2661                     cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
2662            	 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,CIMPropertyList());
2663                  Array<CIMInstance> *enmInst=new Array<CIMInstance>();
2664                  for (int i=0,m=enm.size(); i<m; i++) {
2665                     enmInst->append(CIMInstance(enm[i]));
2666                  }
2667                  return (jint)enmInst;
2668               }
2669 schuur 1.5    Catch(jEnv);
2670 schuur 1.3    return 0;
2671            }
2672            
2673 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
2674 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
2675 schuur 1.3    jstring jAssocClass, jstring jRole) {
2676               CIMClient *cCc=(CIMClient*)jCc;
2677               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2678            
2679               const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
2680               CIMName assocClass(str);
2681               jEnv->ReleaseStringUTFChars(jAssocClass,str);
2682               str=jEnv->GetStringUTFChars(jRole,NULL);
2683               String role(str);
2684               jEnv->ReleaseStringUTFChars(jRole,str);
2685            
2686               try {
2687 schuur 1.5       checkNs(cop,jNs);
2688 schuur 1.3       Array<CIMObjectPath> enm=cCc->referenceNames(
2689                     cop->getNameSpace(),*cop,assocClass,role);
2690                  return (jint) new Array<CIMObjectPath>(enm);
2691               }
2692 schuur 1.5    Catch(jEnv);
2693 schuur 1.3    return 0;
2694            }
2695            
2696 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
2697 schuur 1.5   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
2698 schuur 1.3    jstring jAssocClass, jstring jRole,
2699 schuur 1.1    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray propertyList) {
2700 schuur 1.3    CIMClient *cCc=(CIMClient*)jCc;
2701               CIMObjectPath *cop=(CIMObjectPath*)jCop;
2702            
2703               const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
2704               CIMName assocClass(str);
2705               jEnv->ReleaseStringUTFChars(jAssocClass,str);
2706               str=jEnv->GetStringUTFChars(jRole,NULL);
2707               String role(str);
2708               jEnv->ReleaseStringUTFChars(jRole,str);
2709            
2710               try {
2711 schuur 1.5       checkNs(cop,jNs);
2712 schuur 1.3       Array<CIMObject> enm=cCc->references(
2713                     cop->getNameSpace(),*cop,assocClass,role,
2714            	 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,CIMPropertyList());
2715                  Array<CIMInstance> *enmInst=new Array<CIMInstance>();
2716                  for (int i=0,m=enm.size(); i<m; i++) {
2717                     enmInst->append(CIMInstance(enm[i]));
2718                  }
2719                  return (jint)enmInst;
2720               }
2721 schuur 1.5    Catch(jEnv);
2722               return 0;
2723            }
2724            
2725            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
2726              (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) {
2727               CIMClient *cCc=(CIMClient*)jCc;
2728            
2729               const char* str=jEnv->GetStringUTFChars(jNs,NULL);
2730               String ns(str);
2731               jEnv->ReleaseStringUTFChars(jNs,str);
2732            
2733               CIMInstance newInstance(CIMName("__Namespace"));
2734               newInstance.addProperty(CIMProperty(CIMName ("name"),ns));
2735            
2736               try {
2737            //      checkNs(cop,jNs);
2738                  cCc->createInstance(CIMNamespaceName("root"),newInstance);
2739 schuur 1.3    }
2740 schuur 1.5    Catch(jEnv);
2741               return;
2742            }
2743            
2744            JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
2745              (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec) {
2746               return jVec;
2747            }
2748            
2749            JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
2750              (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) {
2751               CIMClient *cCc=(CIMClient*)jCc;
2752 schuur 1.3 }
2753 schuur 1.1 
2754 schuur 1.5 } // extern "C"
2755 schuur 1.1 
2756            PEGASUS_NAMESPACE_END
2757            
2758            
2759            
2760            
2761            
2762            
2763            

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2