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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2