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

   1 martin 1.84 //%LICENSE////////////////////////////////////////////////////////////////
   2 martin 1.85 //
   3 martin 1.84 // Licensed to The Open Group (TOG) under one or more contributor license
   4             // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
   5             // this work for additional information regarding copyright ownership.
   6             // Each contributor licenses this file to you under the OpenPegasus Open
   7             // Source License; you may not use this file except in compliance with the
   8             // License.
   9 martin 1.85 //
  10 martin 1.84 // Permission is hereby granted, free of charge, to any person obtaining a
  11             // copy of this software and associated documentation files (the "Software"),
  12             // to deal in the Software without restriction, including without limitation
  13             // the rights to use, copy, modify, merge, publish, distribute, sublicense,
  14             // and/or sell copies of the Software, and to permit persons to whom the
  15             // Software is furnished to do so, subject to the following conditions:
  16 martin 1.85 //
  17 martin 1.84 // The above copyright notice and this permission notice shall be included
  18             // in all copies or substantial portions of the Software.
  19 martin 1.85 //
  20 martin 1.84 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  21 martin 1.85 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  22 martin 1.84 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  23             // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  24             // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  25             // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  26             // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  27 martin 1.85 //
  28 martin 1.84 //////////////////////////////////////////////////////////////////////////
  29 schuur 1.1  //
  30             //%/////////////////////////////////////////////////////////////////////////////
  31 mark.hamzy 1.57 
  32 schuur     1.1  #include "JMPIImpl.h"
  33                 
  34 a.dunfey   1.65 #if defined(PEGASUS_OS_TYPE_WINDOWS)
  35 thilo.boehm 1.88 #include <Pegasus/General/DynamicLibrary.h>
  36 konrad.r    1.14 #else
  37 schuur      1.1  #include <dlfcn.h>
  38 konrad.r    1.14 #endif
  39 schuur      1.1  #include <iostream>
  40 mark.hamzy  1.16 #include <sstream>
  41 schuur      1.1  
  42                  #include <Pegasus/Common/Config.h>
  43                  #include <Pegasus/Common/System.h>
  44                  #include <Pegasus/Common/CIMClass.h>
  45                  #include <Pegasus/Common/CIMInstance.h>
  46                  #include <Pegasus/Common/CIMObjectPath.h>
  47                  #include <Pegasus/Common/CIMProperty.h>
  48                  #include <Pegasus/Common/OperationContext.h>
  49 thilo.boehm 1.79 #include <Pegasus/Common/Tracer.h>
  50 schuur      1.1  #include <Pegasus/Provider/CIMOMHandle.h>
  51                  #include <Pegasus/Client/CIMClient.h>
  52 schuur      1.3  #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
  53 mark.hamzy  1.42 #include <Pegasus/WQL/WQLSelectStatement.h>
  54                  #include <Pegasus/WQL/WQLParser.h>
  55                  #define CALL_SIGN_WQL "WQL"
  56 schuur      1.1  
  57                  PEGASUS_USING_STD;
  58                  PEGASUS_NAMESPACE_BEGIN
  59                  
  60                  JavaVM *JMPIjvm::jvm=NULL;
  61                  JvmVector JMPIjvm::jv;
  62 mark.hamzy  1.16 
  63 mark.hamzy  1.20 #include "Convert.h"
  64                  
  65 mark.hamzy  1.17 JMPIjvm::ClassTable  JMPIjvm::_classTable;
  66                  JMPIjvm::ObjectTable JMPIjvm::_objectTable;
  67                  
  68 schuur      1.1  const char* classNames[]={
  69 mark.hamzy  1.26 /*00*/ "java/util/Vector" ,
  70                  /*01*/ "java/lang/Boolean",
  71                  /*02*/ "java/lang/Byte",
  72                  /*03*/ "java/lang/Short",
  73                  /*04*/ "java/lang/Integer",
  74                  /*05*/ "java/lang/Long",
  75                  /*06*/ "java/lang/Float",
  76                  /*07*/ "java/lang/Double",
  77                  /*08*/ "org/pegasus/jmpi/UnsignedInt8",
  78                  /*09*/ "org/pegasus/jmpi/UnsignedInt16",
  79                  /*10*/ "org/pegasus/jmpi/UnsignedInt32",
  80                  /*11*/ "org/pegasus/jmpi/UnsignedInt64",
  81                  /*12*/ "org/pegasus/jmpi/CIMObjectPath",
  82                  /*13*/ "org/pegasus/jmpi/CIMException",
  83                  /*14*/ "java/math/BigInteger",
  84                  /*15*/ "org/pegasus/jmpi/CIMProperty",
  85                  /*16*/ "org/pegasus/jmpi/CIMOMHandle",
  86                  /*17*/ "org/pegasus/jmpi/CIMClass",
  87                  /*18*/ "org/pegasus/jmpi/CIMInstance",
  88                  /*19*/ "org/pegasus/jmpi/CIMValue",
  89                  /*20*/ "java/lang/Object",
  90 mark.hamzy  1.26 /*21*/ "java/lang/Throwable",
  91                  /*22*/ "java/lang/String",
  92                  /*23*/ "org/pegasus/jmpi/JarClassLoader",
  93                  /*24*/ "org/pegasus/jmpi/CIMDateTime",
  94                  /*25*/ "org/pegasus/jmpi/SelectExp",
  95                  /*26*/ "org/pegasus/jmpi/CIMQualifier",
  96                  /*27*/ "org/pegasus/jmpi/CIMQualifierType",
  97                  /*28*/ "org/pegasus/jmpi/CIMFlavor",
  98                  /*29*/ "org/pegasus/jmpi/CIMArgument",
  99                  /*30*/ "org/pegasus/jmpi/CIMInstanceException",
 100 mark.hamzy  1.35 /*31*/ "org/pegasus/jmpi/CIMObject",
 101                  /*32*/ "java/lang/Character",
 102 mark.hamzy  1.36 /*33*/ "org/pegasus/jmpi/OperationContext",
 103                  /*34*/ "java/lang/Class",
 104 mark.hamzy  1.73 /*35*/ "java/io/ByteArrayOutputStream",
 105                  /*36*/ "java/io/PrintStream"
 106 schuur      1.1  };
 107                  
 108                  const METHOD_STRUCT instanceMethodNames[]={
 109 kumpf       1.87 /*00 VectorNew                      */
 110                  { /*Vector                */
 111 marek       1.78     0,
 112                      "<init>",
 113                      "()V" },
 114 kumpf       1.87 /*01 BooleanNewZ                    */
 115                  { /*Boolean               */
 116 marek       1.78     1,
 117                      "<init>",
 118                      "(Z)V" },
 119 kumpf       1.87 /*02 ByteNewB                       */
 120 marek       1.78 { /*Byte                  */
 121                      2,
 122                      "<init>",
 123                      "(B)V" },
 124                  /*03 ShortNewS                      */
 125                  { /*Short                 */
 126                      3,
 127                      "<init>",
 128                      "(S)V" },
 129                  /*04 IntegerNewI                    */
 130                  { /*Integer               */
 131                      4,
 132                      "<init>",
 133                      "(I)V" },
 134                  /*05 LongNewJ                       */
 135                  { /*Long                  */
 136                      5,
 137                      "<init>",
 138                      "(J)V" },
 139                  /*06 FloatNewF                      */
 140                  { /*Float                 */
 141 marek       1.78     6,
 142                      "<init>",
 143                      "(F)V" },
 144                  /*07 DoubleNewD                     */
 145                  { /*Double                */
 146                      7,
 147                      "<init>",
 148                      "(D)V" },
 149                  /*08 UnsignedInt8NewS               */
 150 kumpf       1.87 { /*UnsignedInt8          */
 151 marek       1.78     8,
 152                      "<init>",
 153                      "(S)V" },
 154                  /*09 UnsignedInt16NewI              */
 155                  { /*UnsignedInt16         */
 156                      9,
 157                      "<init>",
 158                      "(I)V" },
 159                  /*10 UnsignedInt32NewJ              */
 160                  { /*UnsignedInt32         */
 161                      10,
 162                      "<init>",
 163                      "(J)V" },
 164                  /*11 UnsignedInt64NewBi             */
 165                  { /*UnsignedInt64         */
 166                      11,
 167                      "<init>",
 168                      "(Ljava/math/BigInteger;)V" },
 169                  /*12 CIMObjectPathNewJ              */
 170                  { /*CIMObjectPath         */
 171                      12,
 172 marek       1.78     "<init>",
 173                      "(J)V" },
 174                  /*13 CIMExceptionNewSt              */
 175                  { /*CIMException          */
 176                      13,
 177                      "<init>",
 178                      "(Ljava/lang/String;)V" },
 179                  /*14 CIMPropertyNewJ                */
 180                  { /*CIMProperty           */
 181                      15,
 182                      "<init>",
 183                      "(J)V" },
 184                  /*15 VectorAddElement               */
 185                  { /*Vector                */
 186                      0,
 187                      "addElement",
 188                      "(Ljava/lang/Object;)V" },
 189                  /*16 VectorElementAt                */
 190                  { /*Vector                */
 191                      0,
 192                      "elementAt",
 193 marek       1.78     "(I)Ljava/lang/Object;" },
 194                  /*17 CIMOMHandleNewJSt              */
 195                  { /*CIMOMHandle           */
 196                      16,
 197                      "<init>",
 198                      "(JLjava/lang/String;)V" },
 199                  /*18 CIMExceptionNewI               */
 200                  { /*CIMException          */
 201                      13,
 202                      "<init>",
 203                      "(I)V" },
 204                  /*19 CIMClassNewJ                   */
 205                  { /*CIMClass              */
 206                      17,
 207                      "<init>",
 208                      "(J)V" },
 209                  /*20 CIMInstanceNewJ                */
 210                  { /*CIMInstance           */
 211                      18,
 212                      "<init>",
 213                      "(J)V" },
 214 marek       1.78 /*21 CIMObjectPathCInst             */
 215                  { /*CIMObjectPath         */
 216                      12,
 217                      "cInst",
 218                      "()J" },
 219                  /*22 CIMInstanceCInst               */
 220                  { /*CIMInstance           */
 221                      18,
 222                      "cInst",
 223                      "()J" },
 224                  /*23 CIMClassCInst                  */
 225                  { /*CIMClass              */
 226                      17,
 227                      "cInst",
 228                      "()J" },
 229                  /*24 ObjectToString                 */
 230                  { /*Object                */
 231                      20,
 232                      "toString",
 233                      "()Ljava/lang/String;" },
 234                  /*25 ThrowableGetMessage            */
 235 marek       1.78 { /*Throwable             */
 236                      21,
 237                      "getMessage",
 238                      "()Ljava/lang/String;" },
 239                  /*26 CIMExceptionGetID              */
 240                  { /*CIMException          */
 241                      13,
 242                      "getID",
 243                      "()Ljava/lang/String;" },
 244                  /*27 VectorSize                     */
 245 kumpf       1.87 { /*Vector                */
 246 marek       1.78     0,
 247                      "size",
 248                      "()I" },
 249                  /*28 CIMPropertyCInst               */
 250                  { /*CIMProperty           */
 251                      15,
 252                      "cInst",
 253                      "()J" },
 254                  /*29 CIMOMHandleGetClass            */
 255                  { /*CIMOMHandle           */
 256                      16,
 257                      "getClass",
 258                      "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 259                  /*30 VectorRemoveElementAt          */
 260                  { /*Vector                */
 261                      0,
 262                      "removeElementAt",
 263                      "(I)V" },
 264                  /*31 CIMValueCInst                  */
 265                  { /*CIMValue              */
 266                      19,
 267 marek       1.78     "cInst",
 268                      "()J" },
 269                  /*32 CIMExceptionNewISt             */
 270                  { /*CIMException          */
 271                      13,
 272                      "<init>",
 273                      "(ILjava/lang/String;)V" },
 274                  /*33 CIMExceptionGetCode            */
 275                  { /*CIMException          */
 276                      13,
 277                      "getCode",
 278                      "()I" },
 279                  /*34 CIMDateTimeNewJ                */
 280                  { /*CIMDateTime           */
 281                      24,
 282                      "<init>",
 283                      "(J)V" },
 284                  /*35 SelectExpNewJ                  */
 285                  { /*SelectExp             */
 286                      25,
 287                      "<init>",
 288 marek       1.78     "(J)V" },
 289                  /*36 CIMQualifierNewJ               */
 290                  { /*CIMQualifier          */
 291                      26,
 292                      "<init>",
 293                      "(J)V" },
 294                  /*37 CIMFlavorNewI                  */
 295                  { /*CIMFlavor             */
 296                      28,
 297                      "<init>",
 298                      "(I)V" },
 299                  /*38 CIMFlavorGetFlavor             */
 300                  { /*CIMFlavor             */
 301                      28,
 302                      "getFlavor",
 303                      "()I" },
 304                  /*39 CIMArgumentCInst               */
 305                  { /*CIMArgument           */
 306                      29,
 307                      "cInst",
 308                      "()J" },
 309 marek       1.78 /*40 CIMArgumentNewJ                */
 310                  { /*CIMArgument           */
 311                      29,
 312                      "<init>",
 313                      "(J)V" },
 314                  /*41 CIMExceptionNew                */
 315                  { /*CIMException          */
 316                      13,
 317                      "<init>",
 318                      "()V" },
 319                  /*42 CIMExceptionNewStOb            */
 320                  { /*CIMException          */
 321                      13,
 322                      "<init>",
 323                      "(Ljava/lang/String;Ljava/lang/Object;)V" },
 324                  /*43 CIMExceptionNewStObOb          */
 325                  { /*CIMException          */
 326                      13,
 327                      "<init>",
 328                      "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
 329                  /*44 CIMExceptionNewStObObOb        */
 330 marek       1.78 { /*CIMException          */
 331                      13,
 332 kumpf       1.87     "<init>",
 333 marek       1.78     "(Ljava/lang/String;Ljava/lang/Object;"
 334                          "Ljava/lang/Object;Ljava/lang/Object;)V" },
 335                  /*45 CIMValueNewJ                   */
 336                  { /*CIMValue              */
 337                      19,
 338                      "<init>",
 339                      "(J)V" },
 340                  /*46 CIMObjectNewJZ                 */
 341                  { /*CIMObject             */
 342                      31,
 343                      "<init>",
 344                      "(JZ)V" },
 345                  /*47 CharacterNewC                  */
 346                  { /*Character             */
 347                      32,
 348                      "<init>",
 349                      "(C)V" },
 350                  /*48 OperationContextNewJ           */
 351                  { /*OperationContext      */
 352                      33,
 353                      "<init>",
 354 marek       1.78     "(J)V" },
 355                  /*49 OperationContextUnassociate    */
 356                  { /*OperationContext      */
 357                      33,
 358                      "unassociate",
 359                      "()V" },
 360                  /*50 ClassGetInterfaces             */
 361                  { /*Class                 */
 362                      34,
 363                      "getInterfaces",
 364                      "()[Ljava/lang/Class;" },
 365                  /*51 ClassGetName                   */
 366                  { /*Class                 */
 367                      34,
 368                      "getName",
 369                      "()Ljava/lang/String;" },
 370                  /*52 UnsignedInt64NewStr            */
 371                  { /*UnsignedInt64         */
 372                      11,
 373                      "<init>",
 374                      "(Ljava/lang/String;)V" },
 375 marek       1.78 /*53 ByteArrayOutputStreamNew       */
 376                  { /*ByteArrayOutputStream */
 377                      35,
 378                      "<init>",
 379                      "()V" },
 380                  /*54 PrintStreamNewOb               */
 381                  { /*PrintStreamNew        */
 382                      36,
 383                      "<init>",
 384                      "(Ljava/io/OutputStream;)V" },
 385                  /*55 ThrowablePrintStackTrace       */
 386                  { /*Throwable             */
 387                      21,
 388                      "printStackTrace",
 389                      "(Ljava/io/PrintStream;)V" },
 390                  /*56 ByteArrayOutputStreamToString  */
 391                  { /*ByteArrayOutputStream */
 392                      35,
 393                      "toString",
 394                      "()Ljava/lang/String;" }
 395 schuur      1.1  };
 396                  
 397                  const METHOD_STRUCT staticMethodNames[]={
 398 marek       1.78 /*00*/ { 14,
 399                           "valueOf",
 400                           "(J)Ljava/math/BigInteger;" },
 401                  /*01*/ { 23,
 402                           "load",
 403                           "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 404 schuur      1.1  };
 405                  
 406                  static int methodInitDone=0;
 407                  
 408 mark.hamzy  1.26 jclass    classRefs[sizeof(classNames)/sizeof(classNames[0])];
 409 kumpf       1.87 jmethodID instanceMethodIDs[sizeof(instanceMethodNames) /
 410 marek       1.78                                 sizeof(instanceMethodNames[0])];
 411                  jmethodID staticMethodIDs[sizeof(staticMethodNames) /
 412                                                  sizeof(staticMethodNames[0])];
 413 mark.hamzy  1.20 
 414 mark.hamzy  1.26 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name)
 415                  {
 416 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getGlobalClassRef");
 417                  
 418 mark.hamzy  1.44   jclass localRefCls = env->FindClass(name);
 419 mark.hamzy  1.16 
 420 mark.hamzy  1.44   if (localRefCls == NULL)
 421 thilo.boehm 1.79   {
 422                       PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 423                           "No local Class reference found. (localRefCls==NULL)");
 424                       PEG_METHOD_EXIT();
 425 mark.hamzy  1.16      return JNI_FALSE;
 426 thilo.boehm 1.79   }
 427                  
 428 mark.hamzy  1.16 
 429 mark.hamzy  1.44   jclass globalRefCls = (jclass) env->NewGlobalRef(localRefCls);
 430 mark.hamzy  1.16 
 431 mark.hamzy  1.28 #if 0
 432 marek       1.78   jmethodID   jmidToString   = env->GetMethodID(globalRefCls,
 433                                                                  "toString",
 434                                                                  "()Ljava/lang/String;");
 435                    jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls,
 436                                                                                jmidToString);
 437 mark.hamzy  1.28   const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
 438                  
 439 thilo.boehm 1.79   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 440 thilo.boehm 1.80       "globalRefCls = %p, name = %s, pszResult = %s",
 441                        globalRefCls,name,pszResult));
 442 mark.hamzy  1.28 
 443                    env->ReleaseStringUTFChars (jstringResult, pszResult);
 444                  #else
 445 thilo.boehm 1.79 
 446                    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 447 thilo.boehm 1.80       "globalRefCls = %p, name = %s",globalRefCls,name));
 448 thilo.boehm 1.79 
 449 mark.hamzy  1.28 #endif
 450                  
 451 schuur      1.1    env->DeleteLocalRef(localRefCls);
 452 mark.hamzy  1.16 
 453 thilo.boehm 1.79   PEG_METHOD_EXIT();
 454 schuur      1.1    return globalRefCls;
 455                  }
 456                  
 457 mark.hamzy  1.26 JMPIjvm::JMPIjvm()
 458                  {
 459 mark.hamzy  1.32    initJVM ();
 460 schuur      1.1  }
 461                  
 462 mark.hamzy  1.26 JMPIjvm::~JMPIjvm()
 463                  {
 464 schuur      1.1  }
 465                  
 466 mark.hamzy  1.26 int JMPIjvm::cacheIDs(JNIEnv *env)
 467                  {
 468 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::cacheIDs");
 469                  
 470 mark.hamzy  1.44    if (methodInitDone == 1)
 471 thilo.boehm 1.79    {
 472                        PEG_METHOD_EXIT();
 473 mark.hamzy  1.16       return JNI_TRUE;
 474 thilo.boehm 1.79    }
 475 kumpf       1.87 
 476 mark.hamzy  1.44    if (methodInitDone == -1)
 477 thilo.boehm 1.79    {
 478                        PEG_METHOD_EXIT();
 479 mark.hamzy  1.16       return JNI_FALSE;
 480 thilo.boehm 1.79    }
 481 kumpf       1.87 
 482 mark.hamzy  1.44    methodInitDone = -1;
 483 mark.hamzy  1.16 
 484 mark.hamzy  1.44    for (unsigned i = 0; i<(sizeof(classNames)/sizeof(classNames[0])); i++)
 485                     {
 486                        if ((classRefs[i] = getGlobalClassRef(env,classNames[i])) == NULL)
 487 mark.hamzy  1.16       {
 488 thilo.boehm 1.79          PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 489                               "Error: Count not find global class ref for %s",classNames[i]));
 490 kumpf       1.87 
 491 thilo.boehm 1.79          PEG_METHOD_EXIT();
 492 mark.hamzy  1.16          return JNI_FALSE;
 493                        }
 494 schuur      1.1     }
 495 schuur      1.7  
 496 kumpf       1.87    unsigned instanceMethodNamesSize =
 497 marek       1.78        sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0]);
 498                  
 499                     for (unsigned j = 0; j<instanceMethodNamesSize; j++)
 500 mark.hamzy  1.44    {
 501 marek       1.78        instanceMethodIDs[j] = env->GetMethodID(
 502                                                    classRefs[instanceMethodNames[j].clsIndex],
 503                                                    instanceMethodNames[j].methodName,
 504                                                    instanceMethodNames[j].signature);
 505                         if (instanceMethodIDs[j] == NULL)
 506                         {
 507 thilo.boehm 1.79            PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 508                                 "Error: Could not get instance method id for %s:%s",
 509                                 classNames[instanceMethodNames[j].clsIndex],
 510                                 instanceMethodNames[j].methodName));
 511                  
 512                             PEG_METHOD_EXIT();
 513 schuur      1.1           return 0;
 514 mark.hamzy  1.17       }
 515 mark.hamzy  1.16    }
 516 kumpf       1.87    unsigned staticMethodNamesSize =
 517 marek       1.78        sizeof(staticMethodNames) / sizeof(staticMethodNames[0]);
 518                     for (unsigned k = 0; k<staticMethodNamesSize; k++)
 519                     {
 520                         staticMethodIDs[k] = env->GetStaticMethodID(
 521                                                  classRefs[staticMethodNames[k].clsIndex],
 522                                                  staticMethodNames[k].methodName,
 523                                                  staticMethodNames[k].signature);
 524                  
 525                         if (staticMethodIDs[k] == NULL)
 526                         {
 527 thilo.boehm 1.79            PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 528                                 "Error: Could not get static method id for %s:%s",
 529                                 classNames[staticMethodNames[k].clsIndex],
 530                                 staticMethodNames[k].methodName));
 531                  
 532                             PEG_METHOD_EXIT();
 533 marek       1.78            return 0;
 534                         }
 535 mark.hamzy  1.16    }
 536                  
 537 mark.hamzy  1.44    jv.env = env;
 538                     jv.classRefs = classRefs;
 539                     jv.instMethodIDs = instanceMethodIDs;
 540                     jv.staticMethodIDs = staticMethodIDs;
 541                     jv.instanceMethodNames = instanceMethodNames;
 542 mark.hamzy  1.30 
 543 mark.hamzy  1.44    methodInitDone = 1;
 544 mark.hamzy  1.16 
 545 thilo.boehm 1.79    PEG_METHOD_EXIT();
 546 schuur      1.1     return JNI_TRUE;
 547                  }
 548                  
 549 mark.hamzy  1.62 static void throwCIMException (JNIEnv *env, char *e)
 550 mark.hamzy  1.26 {
 551 mark.hamzy  1.62    JMPIjvm::cacheIDs (env);
 552 mark.hamzy  1.30 
 553 mark.hamzy  1.62    env->ThrowNew (JMPIjvm::jv.CIMExceptionClassRef, e);
 554 schuur      1.1  }
 555                  
 556 mark.hamzy  1.62 int JMPIjvm::destroyJVM ()
 557 schuur      1.3  {
 558 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JPIjvm::destroyJVM");
 559 mark.hamzy  1.16 
 560 mark.hamzy  1.26 #ifdef JAVA_DESTROY_VM_WORKS
 561 mark.hamzy  1.44    if (jvm!= NULL)
 562                     {
 563 schuur      1.3        JvmVector *jv;
 564 mark.hamzy  1.26 
 565 schuur      1.3        attachThread(&jv);
 566 mark.hamzy  1.32 
 567 schuur      1.3        jvm->DestroyJavaVM();
 568 mark.hamzy  1.26 
 569                        jvm = NULL;
 570                  
 571 thilo.boehm 1.79       PEG_METHOD_EXIT();
 572 schuur      1.3        return 0;
 573                     }
 574 mark.hamzy  1.26 #endif
 575 mark.hamzy  1.16 
 576 thilo.boehm 1.79    PEG_METHOD_EXIT();
 577 schuur      1.3     return -1;
 578                  }
 579                  
 580 mark.hamzy  1.32 Mutex JMPIjvm::_initMutex;
 581                  
 582                  int JMPIjvm::initJVM ()
 583 schuur      1.1  {
 584 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JPIjvm::initJVM");
 585                  
 586 mark.hamzy  1.32    AutoMutex lock (_initMutex);
 587                  
 588                     if (jvm != NULL)
 589                     {
 590                        return 0;
 591                     }
 592                  
 593 schuur      1.1     JavaVMInitArgs vm_args;
 594                     jint res;
 595 mark.hamzy  1.16    char *envstring;
 596 schuur      1.1     JNIEnv *env;
 597 mark.hamzy  1.16    JavaVMOption *poptions = 0;
 598                     int maxoption = 0;
 599 mark.hamzy  1.29    typedef struct _JVMOptions {
 600                        const char *pszEnvName;
 601                        const char *pszPrefix;
 602                        bool        fSplit;
 603                     } JVMOPTIONS;
 604 mark.hamzy  1.16    Array<std::string> JNIoptions;
 605 mark.hamzy  1.29    static JVMOPTIONS aEnvOptions[] = {
 606 mark.hamzy  1.45       { "CLASSPATH",                           "-Djava.class.path=", false },
 607 mark.hamzy  1.29       { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx"              , false },
 608                        { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms"              , false },
 609                        { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss"              , false },
 610                        { "PEGASUS_JMPI_VERBOSE",                "-verbose:"         , true  }
 611 mark.hamzy  1.16    };
 612                     std::ostringstream oss;
 613 schuur      1.9  
 614 thilo.boehm 1.79    PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 615                         "Start to initialize the JVM.");
 616 kumpf       1.87 
 617 mark.hamzy  1.44    jv.initRc = 0;
 618 schuur      1.1  
 619 mark.hamzy  1.44    envstring = getenv("CLASSPATH");
 620                     if (envstring == NULL)
 621                     {
 622                        jv.initRc = 1;
 623 mark.hamzy  1.16 
 624 marek       1.81       PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1,
 625 thilo.boehm 1.79           "No CLASSPATH environment variable found.");
 626                  
 627                        PEG_METHOD_EXIT();
 628 mark.hamzy  1.16 
 629 marek       1.47       throw PEGASUS_CIM_EXCEPTION_L(
 630 marek       1.78           CIM_ERR_FAILED,
 631                            MessageLoaderParms(
 632                                "ProviderManager2.JMPI.JMPIImpl.GET_CLASSPATH_FAILED.STANDARD",
 633                                "Could not get CLASSPATH from environment.")
 634                            );
 635 thilo.boehm 1.68 
 636 mark.hamzy  1.16       return -1;
 637                     }
 638                  
 639 mark.hamzy  1.62 ///JNIoptions.append ("-Djava.compiler=NONE");
 640 mark.hamzy  1.20 ///maxoption++;
 641 kumpf       1.87 
 642 marek       1.78    unsigned int aEnvOptionsSize=sizeof(aEnvOptions)/sizeof(aEnvOptions[0]);
 643                     for (Uint32 i = 0; i < aEnvOptionsSize; i++)
 644 mark.hamzy  1.16    {
 645 mark.hamzy  1.29       JVMOPTIONS *pEnvOption = &aEnvOptions[i];
 646 mark.hamzy  1.16 
 647 marek       1.78       envstring = getenv(pEnvOption->pszEnvName);
 648 mark.hamzy  1.16       if (envstring)
 649                        {
 650 mark.hamzy  1.29          if (pEnvOption->fSplit)
 651                           {
 652                              bool              fCommaFound  = true;
 653                              string            stringValues = envstring;
 654                              string::size_type posStart     = 0;
 655 marek       1.78             string::size_type posEnd       = stringValues.length() - 1;
 656 mark.hamzy  1.29 
 657                              while (fCommaFound)
 658                              {
 659                                 string            stringValue;
 660 marek       1.78                string::size_type posComma    = stringValues.find(',',
 661                                                                                   posStart);
 662 mark.hamzy  1.29 
 663                                 if (posComma != string::npos)
 664                                 {
 665 marek       1.78                   fCommaFound=true;
 666                                    stringValue=stringValues.substr(posStart, posComma);
 667                                    posStart=posComma + 1;
 668 mark.hamzy  1.29                }
 669                                 else
 670                                 {
 671 marek       1.78                   fCommaFound=false;
 672                                    stringValue=stringValues.substr(posStart,posEnd-posStart+1);
 673 mark.hamzy  1.29                }
 674                  
 675 thilo.boehm 1.79                PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
 676                                     "fCommaFound = %d, posStart = %d, "
 677                                         "posComma =  %d, posEnd = %d",
 678                                     fCommaFound,posStart,posComma,posEnd));
 679 mark.hamzy  1.29 
 680                                 maxoption++;
 681                  
 682                                 oss.str ("");
 683                                 oss << pEnvOption->pszPrefix << stringValue;
 684                  
 685                                 JNIoptions.append (oss.str ());
 686                  
 687 thilo.boehm 1.79                PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
 688                                     "%s found! Specifying \"%s\"",
 689                                     pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
 690 mark.hamzy  1.29             }
 691                           }
 692                           else
 693                           {
 694                              maxoption++;
 695 mark.hamzy  1.16 
 696 mark.hamzy  1.29             oss.str ("");
 697                              oss << pEnvOption->pszPrefix << envstring;
 698 mark.hamzy  1.16 
 699 mark.hamzy  1.29             JNIoptions.append (oss.str ());
 700 mark.hamzy  1.16 
 701 thilo.boehm 1.79             PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 702                                  "%s found! Specifying \"%s\"",
 703                                  pEnvOption->pszEnvName, (const char*)oss.str().c_str()));
 704                  
 705 mark.hamzy  1.29          }
 706 mark.hamzy  1.16       }
 707                     }
 708                  
 709                     poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption));
 710                     if (!poptions)
 711                     {
 712 mark.hamzy  1.44       jv.initRc = 1;
 713 mark.hamzy  1.16 
 714 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL2,
 715                            "Could not allocate %d structures of size %d.",
 716                            maxoption,sizeof (JavaVMOption)));
 717 mark.hamzy  1.16 
 718 thilo.boehm 1.79       PEG_METHOD_EXIT();
 719 schuur      1.1        return -1;
 720                     }
 721                  
 722 mark.hamzy  1.44    for (Uint32 i = 0; i < JNIoptions.size(); i++)
 723 mark.hamzy  1.16    {
 724                        poptions[i].optionString = (char *)JNIoptions[i].c_str ();
 725                  
 726 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3,
 727                            "Setting option %d to \"%s\".",
 728                            i ,poptions[i].optionString));
 729 mark.hamzy  1.16    }
 730                  
 731 mark.hamzy  1.44    vm_args.version = JNI_VERSION_1_2;
 732                     vm_args.options = poptions;
 733                     vm_args.nOptions = maxoption;
 734                     vm_args.ignoreUnrecognized = JNI_TRUE;
 735 schuur      1.1  
 736 mark.hamzy  1.44    res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 737 mark.hamzy  1.16 
 738                     if (poptions)
 739                     {
 740                        free (poptions);
 741                     }
 742                  
 743 mark.hamzy  1.44    if (res!= 0)
 744                     {
 745                        jv.initRc = 1;
 746 mark.hamzy  1.32 
 747 thilo.boehm 1.79       PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
 748                            "Can not create Java VM !");
 749 mark.hamzy  1.16 
 750 thilo.boehm 1.79       PEG_METHOD_EXIT();
 751 mark.hamzy  1.32       return -1;
 752 schuur      1.1     }
 753                  
 754 mark.hamzy  1.30    cacheIDs(env);
 755 schuur      1.1  
 756 mark.hamzy  1.44    if (env->ExceptionOccurred())
 757                     {
 758                        jv.initRc = 1;
 759 mark.hamzy  1.32 
 760 schuur      1.1        env->ExceptionDescribe();
 761 mark.hamzy  1.32 
 762                  #ifdef JAVA_DESTROY_VM_WORKS
 763                  
 764                        JvmVector *jv = NULL;
 765                  
 766                        attachThread (&jv);
 767                  
 768                        jvm->DestroyJavaVM ();
 769                  
 770                        jvm = NULL;
 771                  #endif
 772                  
 773 thilo.boehm 1.79       PEG_METHOD_EXIT();
 774 mark.hamzy  1.32       return -1;
 775 schuur      1.1     }
 776                  
 777 mark.hamzy  1.44    jv.initRc = 1;
 778                     jv.jvm = jvm;
 779 mark.hamzy  1.32 
 780 thilo.boehm 1.79    PEG_METHOD_EXIT();
 781 schuur      1.1     return res;
 782                  }
 783                  
 784 mark.hamzy  1.62 JNIEnv* JMPIjvm::attachThread (JvmVector **jvp)
 785 mark.hamzy  1.32 {
 786                     JNIEnv* env = NULL;
 787 marek       1.47    int rc;
 788 mark.hamzy  1.32 
 789                     if (jvm == NULL)
 790                     {
 791 marek       1.47       rc = initJVM ();
 792 mark.hamzy  1.32 
 793 marek       1.47       if ((jvm == NULL) || (rc != 0))
 794 mark.hamzy  1.32          return NULL;
 795                     }
 796                  
 797                     jvm->AttachCurrentThread ((void**)&env,NULL);
 798                  
 799 mark.hamzy  1.44    *jvp = &jv;
 800 mark.hamzy  1.32 
 801 schuur      1.1     return env;
 802                  }
 803                  
 804 mark.hamzy  1.62 void JMPIjvm::detachThread ()
 805 mark.hamzy  1.26 {
 806 mark.hamzy  1.62    jvm->DetachCurrentThread ();
 807 schuur      1.1  }
 808                  
 809 mark.hamzy  1.57 jobject JMPIjvm::getProvider (JNIEnv     *env,
 810                                                String      jarName,
 811                                                String      className,
 812                                                const char *pszProviderName,
 813                                                jclass     *pjClass)
 814                  {
 815 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getProvider");
 816                  
 817 mark.hamzy  1.57    jobject   jProviderInstance      = 0;
 818                     jclass    jClassLoaded           = 0;
 819                     jmethodID jId                    = 0;
 820                     jobject   jProviderInstanceLocal = 0;
 821                  
 822 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 823 thilo.boehm 1.80        "jarName = %s, className = %s, pszProviderName = %s, pjClass = %p",
 824                         (const char*)jarName.getCString(),
 825                         (const char*)className.getCString(),
 826                         pszProviderName,pjClass));
 827 mark.hamzy  1.57 
 828                     // CASE #1
 829                     //    className has been loaded previously.
 830                     //    Return saved instance.
 831                     _objectTable.lookup (className, jProviderInstance);
 832                     _classTable.lookup (className, jClassLoaded);
 833                  
 834 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 835 thilo.boehm 1.80        "jProviderInstance = %p, jClassLoaded = %p",
 836                         jProviderInstance,jClassLoaded));
 837 mark.hamzy  1.57 
 838                     if (  jProviderInstance
 839                        && jClassLoaded
 840                        )
 841                     {
 842                        if (pjClass)
 843                        {
 844                           *pjClass = jClassLoaded;
 845                        }
 846 thilo.boehm 1.79       PEG_METHOD_EXIT();
 847 mark.hamzy  1.57       return jProviderInstance;
 848                     }
 849                  
 850                     // CASE #2
 851                     //    className can be loaded via getGlobalClassRef ().
 852                     //    Load and return the instance.
 853                     // NOTE:
 854 marek       1.78    //    According to
 855                     //        http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html
 856 mark.hamzy  1.57    //    In JDK 1.1, FindClass searched only local classes in CLASSPATH.
 857 mark.hamzy  1.16 
 858 mark.hamzy  1.57    jClassLoaded = getGlobalClassRef (env,
 859                                                       (const char*)className.getCString ());
 860 mark.hamzy  1.17 
 861 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 862 thilo.boehm 1.80        "jClassLoaded = %p",jClassLoaded));
 863 mark.hamzy  1.16 
 864 mark.hamzy  1.57    if (env->ExceptionCheck ())
 865 mark.hamzy  1.44    {
 866 mark.hamzy  1.57       // CASE #3
 867                        //    see if the className can be loaded via JarClassLoader.load ().
 868                        //    Load and return the instance.
 869 mark.hamzy  1.58       jstring jJarName          = 0;
 870                        jstring jClassName        = 0;
 871                        jclass  jClassLoadedLocal = 0;
 872 mark.hamzy  1.57 
 873                        env->ExceptionClear ();
 874                  
 875                        // NOTE: Instances of "packageName/className" will not work with the jar
 876                        //       class loader.  Change the '/' to a '.'.
 877 marek       1.86       String fixedClassName(className);
 878                        static Char16 slash=Char16('/');
 879 kumpf       1.87 
 880 marek       1.86       for (Uint32 i=0; i<className.size(); i++)
 881 mark.hamzy  1.57       {
 882 marek       1.86           if (fixedClassName[i]==slash)
 883                            {
 884                                fixedClassName[i]=Char16('.');
 885                            }
 886                        };
 887 mark.hamzy  1.57 
 888 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 889 thilo.boehm 1.80           "fixedClassName = %s",(const char*)fixedClassName.getCString()));
 890 mark.hamzy  1.57 
 891 marek       1.78       jJarName = env->NewStringUTF((const char*)jarName.getCString());
 892                        jClassName = env->NewStringUTF((const char*)fixedClassName.getCString());
 893 mark.hamzy  1.57 
 894 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 895 thilo.boehm 1.80           "jJarName = %p, jClassName = %p",
 896                            jJarName,jClassName));
 897 marek       1.78 
 898                        jClassLoadedLocal = (jclass)env->CallStaticObjectMethod(
 899                                                JMPIjvm::jv.JarClassLoaderClassRef,
 900                                                JMPIjvm::jv.JarClassLoaderLoad,
 901                                                jJarName,
 902                                                jClassName);
 903                  
 904 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 905 thilo.boehm 1.80           "jClassLoadedLocal = %p",jClassLoadedLocal));
 906 mark.hamzy  1.57 
 907                        if (env->ExceptionCheck ())
 908                        {
 909 thilo.boehm 1.79          env->ExceptionDescribe();
 910 mark.hamzy  1.57 
 911 marek       1.81          PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
 912 thilo.boehm 1.79               "Unable to instantiate provider %s: "
 913                                "Can not load Java class %s from jar %s.",
 914                                pszProviderName,
 915                                (const char*)fixedClassName.getCString(),
 916                                (const char*)jarName.getCString()));
 917 mark.hamzy  1.57 
 918 thilo.boehm 1.79          PEG_METHOD_EXIT();
 919 mark.hamzy  1.57          return 0;
 920                        }
 921 mark.hamzy  1.58 
 922                        jClassLoaded = (jclass)env->NewGlobalRef (jClassLoadedLocal);
 923                  
 924 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 925 thilo.boehm 1.80           "jClassLoaded = %p",jClassLoaded));
 926 mark.hamzy  1.58 
 927                        env->DeleteLocalRef (jClassLoadedLocal);
 928 schuur      1.1     }
 929                  
 930 mark.hamzy  1.57    if (pjClass)
 931 mark.hamzy  1.44    {
 932 mark.hamzy  1.57       *pjClass = jClassLoaded;
 933 schuur      1.1     }
 934                  
 935 mark.hamzy  1.57    if (!jClassLoaded)
 936 mark.hamzy  1.44    {
 937 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
 938 thilo.boehm 1.79            "Unable to instantiate provider %s: "
 939                             "Can not load Java class.",pszProviderName));
 940                        PEG_METHOD_EXIT();
 941 mark.hamzy  1.57       return 0;
 942 schuur      1.1     }
 943 mark.hamzy  1.17 
 944 thilo.boehm 1.79    jId = env->GetMethodID (jClassLoaded,"<init>","()V");
 945                  
 946                     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 947 thilo.boehm 1.80         "GetMethodID() jID = %p ",jId));
 948 mark.hamzy  1.57 
 949                     jProviderInstanceLocal = env->NewObject (jClassLoaded,
 950                                                              jId);
 951                  
 952 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 953 thilo.boehm 1.80         "NewObject() jProviderInstanceLocal = %p ",
 954                          jProviderInstanceLocal));
 955 mark.hamzy  1.57 
 956                     if (!jProviderInstanceLocal)
 957 mark.hamzy  1.17    {
 958 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
 959 thilo.boehm 1.79            "Unable to instantiate provider %s: "
 960                             "No new Java object of provider.",pszProviderName));
 961                        PEG_METHOD_EXIT();
 962 mark.hamzy  1.57       return 0;
 963 mark.hamzy  1.17    }
 964 schuur      1.1  
 965 mark.hamzy  1.57    jProviderInstance = (jobject)env->NewGlobalRef (jProviderInstanceLocal);
 966                  
 967 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 968 thilo.boehm 1.80         "NewGlobalRef() jProviderInstance = %p ",jProviderInstance));
 969 mark.hamzy  1.57 
 970                     if (!jProviderInstance)
 971 mark.hamzy  1.44    {
 972 marek       1.81        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
 973 thilo.boehm 1.79             "Unable to instantiate provider %s: "
 974                              "No global reference to provider object.",pszProviderName));
 975                        PEG_METHOD_EXIT();
 976 mark.hamzy  1.57       return 0;
 977 schuur      1.1     }
 978 mark.hamzy  1.17 
 979 mark.hamzy  1.57    _classTable.insert (className, jClassLoaded);
 980                     _objectTable.insert (className, jProviderInstance);
 981 mark.hamzy  1.17 
 982 thilo.boehm 1.79    PEG_METHOD_EXIT();
 983 mark.hamzy  1.57    return jProviderInstance;
 984 schuur      1.1  }
 985                  
 986 mark.hamzy  1.62 jobject JMPIjvm::getProvider (JNIEnv *env, const char *cn, jclass *cls)
 987 schuur      1.1  {
 988 mark.hamzy  1.17    String cln = cn;
 989 mark.hamzy  1.44    jobject gProv = NULL;
 990                     jclass scls = NULL;
 991 mark.hamzy  1.16 
 992 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::getProvider");
 993                  
 994                     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
 995 thilo.boehm 1.80         "cn = %s, cls = %p",cn,cls));
 996 mark.hamzy  1.17 
 997                     _objectTable.lookup(cln,gProv);
 998                     _classTable.lookup(cln,scls);
 999 thilo.boehm 1.79 
1000                     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1001 thilo.boehm 1.80         "gProv = %p, scls = %p",gProv,scls));
1002 mark.hamzy  1.16 
1003 mark.hamzy  1.44    if (gProv)
1004                     {
1005                        *cls = scls;
1006 schuur      1.1        return gProv;
1007                     }
1008                  
1009 mark.hamzy  1.44    scls = getGlobalClassRef(env,cn);
1010                     if (env->ExceptionCheck())
1011                     {
1012 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
1013 thilo.boehm 1.79            "Provider %s not found: No global reference.",cn));
1014                        PEG_METHOD_EXIT();
1015 schuur      1.1        return NULL;
1016                     }
1017 mark.hamzy  1.44    *cls = scls;
1018 mark.hamzy  1.17 
1019                     if (scls)
1020                     {
1021 thilo.boehm 1.79        PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1022 thilo.boehm 1.80             "Inserting global reference %p into class table.",scls));
1023 mark.hamzy  1.17       _classTable.insert(cln,scls);
1024                     }
1025 schuur      1.1  
1026 mark.hamzy  1.44    jmethodID id = env->GetMethodID(*cls,"<init>","()V");
1027                     jobject lProv = env->NewObject(*cls,id);
1028                     gProv = (jobject)env->NewGlobalRef(lProv);
1029                     if (env->ExceptionCheck())
1030                     {
1031 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
1032 thilo.boehm 1.79            "Unable to instantiate provider %s.",cn));
1033                        PEG_METHOD_EXIT();
1034 schuur      1.1        return NULL;
1035                     }
1036 mark.hamzy  1.17 
1037                     if (gProv)
1038                     {
1039 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1040 thilo.boehm 1.80            "Inserting provider reference %p into object table.",gProv));
1041 mark.hamzy  1.17       _objectTable.insert(cln,gProv);
1042                     }
1043                  
1044 thilo.boehm 1.79    PEG_METHOD_EXIT();
1045 schuur      1.1     return gProv;
1046                  }
1047                  
1048 mark.hamzy  1.70 #if 0
1049                  
1050                  // Java 1.4 version of programmatically accessting the backtrace stack
1051 mark.hamzy  1.73 // NOTE: Renumber to follow current content
1052                  // add to:
1053                  // const char* classNames[]={
1054                  ///*37*/ "java/lang/StackTraceElement"
1055                  // add to:
1056                  // const METHOD_STRUCT instanceMethodNames[]={
1057 marek       1.78 ///*57 ThrowableGetStackTrace         */ { /*Throwable        */
1058                  ///21, "getStackTrace",   "()Ljava/lang/StackTraceElement;" },
1059                  ///*58 StackTraceElementGetClassName  */ { /*StackTraceElement*/
1060                  ///37, "getClassName",    "()Ljava/lang/String;" },
1061                  ///*59 StackTraceElementGetFileName   */ { /*StackTraceElement*/
1062                  ///37, "getFileName",     "()Ljava/lang/String;" },
1063                  ///*60 StackTraceElementGetLineNumber */ { /*StackTraceElement*/
1064                  ///37, "getLineNumber",   "()I" },
1065                  ///*61 StackTraceElementGetMethodName */ { /*StackTraceElement*/
1066                  ///37, "getMethodName",   "()Ljava/lang/String;" }
1067 mark.hamzy  1.70 
1068                  String getExceptionInfo (JNIEnv *env)
1069                  {
1070                     jthrowable   err        = env->ExceptionOccurred ();
1071                     jobjectArray stackTrace = 0;
1072                     String       rc;
1073                  
1074 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
1075                  
1076                     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1077 thilo.boehm 1.80         "err =  %ld ",(long)(jlong)err));
1078 mark.hamzy  1.70 
1079                     if (!err)
1080 thilo.boehm 1.79    {
1081                         PEG_METHOD_EXIT();
1082 mark.hamzy  1.70       return rc;
1083 thilo.boehm 1.79    }
1084 kumpf       1.87 
1085 mark.hamzy  1.70 
1086 marek       1.78    stackTrace = (jobjectArray)env->CallObjectMethod(
1087                                      err,
1088                                      JMPIjvm::jv.ThrowableGetStackTrace);
1089 mark.hamzy  1.70 
1090 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1091 thilo.boehm 1.80         "stackTrace =  %p ",stackTrace));
1092 mark.hamzy  1.70 
1093                     if (!stackTrace)
1094 thilo.boehm 1.79    {
1095                         PEG_METHOD_EXIT();
1096 mark.hamzy  1.70       return rc;
1097 thilo.boehm 1.79    }
1098 mark.hamzy  1.70 
1099 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1100                          "stackTrace length =  %d",(jlong)env->GetArrayLength(stackTrace)));
1101 mark.hamzy  1.70 
1102                     jobject jFirstST = 0;
1103                     jstring jClass   = 0;
1104                     jstring jFile    = 0;
1105                     jstring jMethod  = 0;
1106                     jint    jLine    = 0;
1107                  
1108                     jFirstST = env->GetObjectArrayElement (stackTrace, 0);
1109                  
1110 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1111 thilo.boehm 1.80         "jFirstST = %p",jFirstST));
1112 mark.hamzy  1.70 
1113                     if (!jFirstST)
1114 thilo.boehm 1.79    {
1115                         PEG_METHOD_EXIT();
1116 mark.hamzy  1.70       return rc;
1117 thilo.boehm 1.79    }
1118 mark.hamzy  1.70 
1119 marek       1.78    jClass  = (jstring)env->CallObjectMethod(
1120                                   jFirstST,
1121                                   JMPIjvm::jv.StackTraceElementGetClassName);
1122                     jFile   = (jstring)env->CallObjectMethod(
1123                                   jFirstST,
1124                                   JMPIjvm::jv.StackTraceElementGetFileName);
1125                     jMethod = (jstring)env->CallObjectMethod(
1126                                   jFirstST,
1127                                   JMPIjvm::jv.StackTraceElementGetMethodName);
1128                     jLine   = env->CallIntMethod(
1129                                   jFirstST,
1130                                   JMPIjvm::jv.StackTraceElementGetLineNumber);
1131 mark.hamzy  1.70 
1132 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1133 thilo.boehm 1.80        "jClass = %p, jFile = %p, jMethod = %p, jLine = %p",
1134                         jClass,jFile,jMethod,jLine));
1135 mark.hamzy  1.70 
1136                     const char *pszClass  = 0;
1137                     const char *pszFile   = 0;
1138                     const char *pszMethod = 0;
1139                  
1140                     pszClass  = env->GetStringUTFChars (jClass, NULL);
1141                     pszFile   = env->GetStringUTFChars (jFile, NULL);
1142                     pszMethod = env->GetStringUTFChars (jMethod, NULL);
1143                  
1144                     std::ostringstream oss;
1145                     String             exceptionInfo;
1146                  
1147                     if (pszFile)
1148                     {
1149                        oss << "File: " << pszFile;
1150                  
1151                        env->ReleaseStringUTFChars (jFile, pszFile);
1152                     }
1153                     if (jLine)
1154                     {
1155                        oss << ", Line: " << jLine;
1156 mark.hamzy  1.70    }
1157                     if (pszClass)
1158                     {
1159                        oss << ", Class: " << pszClass;
1160                  
1161                        env->ReleaseStringUTFChars (jClass, pszClass);
1162                     }
1163                     if (pszMethod)
1164                     {
1165                        oss << ", Method: " << pszMethod;
1166                  
1167                        env->ReleaseStringUTFChars (jMethod, pszMethod);
1168                     }
1169                  
1170 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1171                          "oss = %s",(const char*)oss.str().c_str()));
1172 mark.hamzy  1.70 
1173                     rc = oss.str ().c_str ();
1174                  
1175                     return rc;
1176                  }
1177                  
1178                  #else
1179                  
1180                  String getExceptionInfo (JNIEnv *env)
1181                  {
1182                     jthrowable err = env->ExceptionOccurred ();
1183                     String     rc;
1184                  
1185 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"getExceptionInfo");
1186                  
1187                     PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1188 thilo.boehm 1.80         "err =  %ld ",(long)(jlong)err));
1189 mark.hamzy  1.70 
1190                     if (!err)
1191 thilo.boehm 1.79    {
1192                         PEG_METHOD_EXIT();
1193 mark.hamzy  1.70       return rc;
1194 thilo.boehm 1.79    }
1195                  
1196 mark.hamzy  1.70 
1197                     // ByteArrayOutputStream baos = new ByteArrayOutputStream ();
1198                     // PrintStream           ps   = new PrintStream (baos);
1199                     // e.printStackTrace (ps);
1200                     // result = baos.toString ();
1201                  
1202                     jobject jBAOS = 0;
1203                     jobject jPS   = 0;
1204                  
1205                     jBAOS = env->NewObject (JMPIjvm::jv.ByteArrayOutputStreamClassRef,
1206                                             JMPIjvm::jv.ByteArrayOutputStreamNew);
1207                  
1208 thilo.boehm 1.80    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, "jBAOS = %p ",jBAOS));
1209 mark.hamzy  1.70 
1210                     if (!jBAOS)
1211 mark.hamzy  1.72    {
1212 thilo.boehm 1.79       env->ExceptionDescribe ();
1213 mark.hamzy  1.72 
1214 thilo.boehm 1.79       PEG_METHOD_EXIT();
1215 mark.hamzy  1.70       return rc;
1216 mark.hamzy  1.72    }
1217 mark.hamzy  1.70 
1218                     jPS = env->NewObject (JMPIjvm::jv.PrintStreamClassRef,
1219                                           JMPIjvm::jv.PrintStreamNewOb,
1220                                           jBAOS);
1221                  
1222 thilo.boehm 1.80    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, "jPS = %p ",jPS));
1223 mark.hamzy  1.70 
1224                     if (!jPS)
1225 thilo.boehm 1.79    {
1226                         PEG_METHOD_EXIT();
1227 mark.hamzy  1.70       return rc;
1228 thilo.boehm 1.79    }
1229 mark.hamzy  1.70 
1230                     env->CallVoidMethod (err,
1231                                          JMPIjvm::jv.ThrowablePrintStackTrace,
1232                                          jPS);
1233                  
1234                     jstring jST = 0;
1235                  
1236 marek       1.78    jST = (jstring)env->CallObjectMethod(
1237                               jBAOS,
1238                               JMPIjvm::jv.ByteArrayOutputStreamToString);
1239 mark.hamzy  1.70 
1240 thilo.boehm 1.80    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,"jST = %p ",jST));
1241 mark.hamzy  1.70 
1242                     const char *pszST = 0;
1243                  
1244                     pszST = env->GetStringUTFChars (jST, NULL);
1245                  
1246                     if (pszST)
1247                     {
1248 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1249                             "pszST = %s ",pszST));
1250 mark.hamzy  1.70 
1251                        rc = pszST;
1252                  
1253                        env->ReleaseStringUTFChars (jST, pszST);
1254                     }
1255                  
1256 thilo.boehm 1.79    PEG_METHOD_EXIT();
1257 mark.hamzy  1.70    return rc;
1258                  }
1259                  
1260                  #endif
1261                  
1262 mark.hamzy  1.62 void JMPIjvm::checkException (JNIEnv *env)
1263 schuur      1.1  {
1264 thilo.boehm 1.79    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIjvm::checkException");
1265                  
1266 mark.hamzy  1.70    if (!env->ExceptionCheck ())
1267 thilo.boehm 1.79    {
1268                         PEG_METHOD_EXIT();
1269 mark.hamzy  1.70       return;
1270 thilo.boehm 1.79    }
1271 mark.hamzy  1.70 
1272 mark.hamzy  1.71    jstring     jMsg = NULL,
1273                                 jId  = NULL;
1274                     int         code;
1275                     const char *cp;
1276                     String      msg;
1277                     String      id;
1278 mark.hamzy  1.73    jthrowable  err  = env->ExceptionOccurred ();
1279 schuur      1.7  
1280 thilo.boehm 1.79 //   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
1281 thilo.boehm 1.80 //        "err =  %ld ",(long)(jlong)err));
1282 mark.hamzy  1.44 
1283 mark.hamzy  1.70    if (!err)
1284 thilo.boehm 1.79    {
1285                         PEG_METHOD_EXIT();
1286 mark.hamzy  1.70       return;
1287 thilo.boehm 1.79    }
1288 mark.hamzy  1.70 
1289 marek       1.81    PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1,
1290 thilo.boehm 1.79         "Provider caused an exception!");
1291 mark.hamzy  1.73 
1292 thilo.boehm 1.79    env->ExceptionDescribe ();
1293 mark.hamzy  1.73 
1294 mark.hamzy  1.71    if (env->IsInstanceOf (err, JMPIjvm::jv.CIMExceptionClassRef))
1295                     {
1296                        env->ExceptionClear ();
1297 mark.hamzy  1.70 
1298 marek       1.78       jMsg = (jstring)env->CallObjectMethod(
1299                                   err,
1300                                   JMPIjvm::jv.ThrowableGetMessage);
1301                        code = (int)env->CallIntMethod(
1302                                   err,
1303                                   JMPIjvm::jv.CIMExceptionGetCode);
1304                        jId  = (jstring)env->CallObjectMethod(
1305                                   err,
1306                                   JMPIjvm::jv.CIMExceptionGetID);
1307 mark.hamzy  1.44 
1308 mark.hamzy  1.71       if (jId)
1309                        {
1310                           cp = env->GetStringUTFChars (jId, NULL);
1311                           id = String (cp);
1312                           env->ReleaseStringUTFChars (jId, cp);
1313                        }
1314 schuur      1.7  
1315 mark.hamzy  1.71       if (jMsg)
1316                        {
1317                           cp  = env->GetStringUTFChars (jMsg, NULL);
1318                           msg = String (cp);
1319                           env->ReleaseStringUTFChars (jMsg, cp);
1320                        }
1321 mark.hamzy  1.16 
1322 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
1323 thilo.boehm 1.79            "throwing Pegasus exception: %d %s (%s)",
1324                             code,(const char*)id.getCString(),(const char*)msg.getCString()));
1325 mark.hamzy  1.16 
1326 thilo.boehm 1.79       PEG_METHOD_EXIT();
1327 mark.hamzy  1.71       throw CIMException ((CIMStatusCode)code, id+" ("+msg+")");
1328                     }
1329                     else
1330                     {
1331 mark.hamzy  1.70       String info = getExceptionInfo (env);
1332                  
1333                        env->ExceptionClear ();
1334                  
1335 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
1336 thilo.boehm 1.79            "Java caused an exception: %s",(const char*)info.getCString()));
1337                  
1338                        PEG_METHOD_EXIT();
1339                  
1340 marek       1.78       throw PEGASUS_CIM_EXCEPTION_L(
1341                            CIM_ERR_FAILED,
1342                            MessageLoaderParms(
1343                                "ProviderManager2.JMPI.JMPIImpl.JAVA_CAUSED_EXCEPTION.STANDARD",
1344                                "Java caused an exception: $0",
1345                                info));
1346 mark.hamzy  1.28    }
1347 schuur      1.2  }
1348 schuur      1.1  
1349                  /**************************************************************************
1350                   * name         - NewPlatformString
1351                   * description  - Returns a new Java string object for the specified
1352                   *                platform string.
1353                   * parameters   - env
1354                   *                s     Platform encoded string
1355                   * returns      - Java string object pointer or null (0)
1356                   **************************************************************************/
1357 mark.hamzy  1.44 jstring JMPIjvm::NewPlatformString (JNIEnv *env, char *s)
1358 schuur      1.1  {
1359 mark.hamzy  1.44     size_t     len = strlen(s);
1360                      jclass     cls;
1361                      jmethodID  mid;
1362 schuur      1.1      jbyteArray ary;
1363                  
1364                      NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
1365                      NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
1366 mark.hamzy  1.44 
1367 schuur      1.1      ary = (*env).NewByteArray((jsize)len);
1368 mark.hamzy  1.44     if (ary != 0)
1369                      {
1370 schuur      1.1          jstring str = 0;
1371 mark.hamzy  1.44         (*env).SetByteArrayRegion (ary,
1372                                                     0,
1373                                                     (jsize)len,
1374 schuur      1.1                                     (jbyte *)s);
1375 mark.hamzy  1.44         if (!(*env).ExceptionOccurred ())
1376                          {
1377                              str = (jstring)(*env).NewObject (cls, mid, ary);
1378 schuur      1.1          }
1379 mark.hamzy  1.44         (*env).DeleteLocalRef (ary);
1380                  
1381 schuur      1.1          return str;
1382                      }
1383                      return 0;
1384                  }
1385                  
1386                  /**************************************************************************
1387                   * name         - NewPlatformStringArray
1388                   * description  - Returns a new array of Java string objects for the specified
1389                   *                array of platform strings.
1390                   * parameters   - env
1391                   *                strv      Platform encoded string array
1392                   *                strc      Number of strings in strv
1393                   * returns      - Java string array object pointer
1394                   **************************************************************************/
1395 marek       1.78 jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
1396 schuur      1.1  {
1397                      jarray cls;
1398                      jarray ary;
1399                      int i;
1400                  
1401                      NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
1402                      NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
1403 mark.hamzy  1.44     for(i = 0; i < strc; i++)
1404                      {
1405                          jstring str = NewPlatformString (env, *strv++);
1406                  
1407 schuur      1.1          NULL_CHECK0(str);
1408 mark.hamzy  1.44 
1409                          (*env).SetObjectArrayElement ((jobjectArray)ary, i, str);
1410                          (*env).DeleteLocalRef (str);
1411 schuur      1.1      }
1412 mark.hamzy  1.44 
1413 schuur      1.1      return (jobjectArray)ary;
1414                  }
1415                  
1416 mark.hamzy  1.62 CIMPropertyList getList (JNIEnv *jEnv, jobjectArray l)
1417 mark.hamzy  1.44 {
1418 mark.hamzy  1.33    CIMPropertyList pl;
1419                  
1420 mark.hamzy  1.44    if (l)
1421                     {
1422 mark.hamzy  1.33       Array<CIMName> n;
1423                  
1424 mark.hamzy  1.44       for (jsize i = 0, s = jEnv->GetArrayLength (l); i <s; i++)
1425                        {
1426                           jstring     jObj = (jstring)jEnv->GetObjectArrayElement (l, i);
1427                           const char *pn   = jEnv->GetStringUTFChars (jObj, NULL);
1428 mark.hamzy  1.33 
1429 mark.hamzy  1.44          n.append (pn);
1430 mark.hamzy  1.33 
1431 mark.hamzy  1.44          jEnv->ReleaseStringUTFChars (jObj, pn);
1432 mark.hamzy  1.33       }
1433                  
1434 mark.hamzy  1.44       pl.set (n);
1435 mark.hamzy  1.33    }
1436                  
1437                     return pl;
1438                  }
1439                  
1440 schuur      1.1  extern "C" {
1441                  
1442 mark.hamzy  1.44 void throwCimException (JNIEnv *jEnv, CIMException &e)
1443                  {
1444 schuur      1.1        JMPIjvm::cacheIDs(jEnv);
1445 marek       1.78       jobject ev = jEnv->NewObject(
1446                            JMPIjvm::jv.CIMExceptionClassRef,
1447                            JMPIjvm::jv.CIMExceptionNewI,
1448                            (jint)e.getCode());
1449 schuur      1.1        jEnv->Throw((jthrowable)ev);
1450                  }
1451                  
1452 mark.hamzy  1.44 void throwFailedException (JNIEnv *jEnv)
1453                  {
1454 schuur      1.1        JMPIjvm::cacheIDs(jEnv);
1455 marek       1.78       jobject ev = jEnv->NewObject(
1456                            JMPIjvm::jv.CIMExceptionClassRef,
1457                            JMPIjvm::jv.CIMExceptionNewI,
1458                            1);
1459 schuur      1.1        jEnv->Throw((jthrowable)ev);
1460                  }
1461                  
1462 mark.hamzy  1.44 void throwNotSupportedException (JNIEnv *jEnv)
1463                  {
1464 schuur      1.1        JMPIjvm::cacheIDs(jEnv);
1465 marek       1.78       jobject ev = jEnv->NewObject(
1466                            JMPIjvm::jv.CIMExceptionClassRef,
1467                            JMPIjvm::jv.CIMExceptionNewI,
1468                            7);
1469 schuur      1.1        jEnv->Throw((jthrowable)ev);
1470                  }
1471                  
1472                  
1473 schuur      1.7  // -------------------------------------
1474                  // ---
1475 marek       1.78 // -        CIMArgument
1476 schuur      1.7  // ---
1477                  // -------------------------------------
1478                  
1479 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMArgument__1new
1480                        (JNIEnv *jEnv, jobject jThs)
1481 mark.hamzy  1.44 {
1482 mark.hamzy  1.62    CIMParamValue *p = new CIMParamValue (String::EMPTY,CIMValue ());
1483 mark.hamzy  1.56 
1484 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMParamValue*, jlong, p);
1485 schuur      1.7  }
1486                  
1487 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS
1488                        (JNIEnv *jEnv, jobject jThs, jstring jN)
1489 mark.hamzy  1.44 {
1490 mark.hamzy  1.62    const char    *str = jEnv->GetStringUTFChars (jN, NULL);
1491                     CIMParamValue *p   = new CIMParamValue (str, CIMValue ());
1492                  
1493                     jEnv->ReleaseStringUTFChars (jN, str);
1494 mark.hamzy  1.56 
1495 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMParamValue*, jlong, p);
1496 schuur      1.7  }
1497                  
1498 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV
1499                        (JNIEnv *jEnv, jobject jThs, jstring jN, jlong jV)
1500 mark.hamzy  1.44 {
1501 mark.hamzy  1.62    const char    *str = jEnv->GetStringUTFChars (jN, NULL);
1502                     CIMValue      *cv  = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
1503                     CIMParamValue *p   = 0;
1504 mark.hamzy  1.56 
1505 mark.hamzy  1.62    if (  str
1506                        && cv
1507                        )
1508                     {
1509                        p = new CIMParamValue (str, *cv);
1510                     }
1511 schuur      1.7  
1512 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
1513 mark.hamzy  1.56 
1514 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMParamValue*, jlong, p);
1515 schuur      1.7  }
1516                  
1517 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType
1518                        (JNIEnv *jEnv, jobject jThs, jlong jP)
1519 mark.hamzy  1.44 {
1520 mark.hamzy  1.62    CIMParamValue *cp       = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1521                     const CIMValue cv       = cp->getValue ();
1522                     String         ref;
1523                     bool           fSuccess = false;
1524                     int            iJType   = 0;
1525                     _dataType     *type     = 0;
1526 mark.hamzy  1.56 
1527 mark.hamzy  1.62    iJType = _dataType::convertCTypeToJavaType (cv.getType (), &fSuccess);
1528 schuur      1.7  
1529 mark.hamzy  1.62    if (fSuccess)
1530                     {
1531                        type = new _dataType (iJType,
1532                                              cv.getArraySize (),
1533                                              false,
1534                                              false,
1535                                              cv.isArray (),
1536                                              ref,
1537                                              true);
1538                     }
1539 schuur      1.7  
1540 mark.hamzy  1.62    return DEBUG_ConvertCToJava (_dataType*, jlong, type);
1541                  }
1542 schuur      1.7  
1543 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue
1544                        (JNIEnv *jEnv, jobject jThs, jlong jP,jlong jV)
1545 mark.hamzy  1.20 {
1546 mark.hamzy  1.62    CIMParamValue *cp = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1547                     CIMValue      *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
1548 mark.hamzy  1.20 
1549 mark.hamzy  1.62    cp->setValue (*cv);
1550                  }
1551 mark.hamzy  1.20 
1552 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue
1553                        (JNIEnv *jEnv, jobject jThs, jlong jP)
1554                  {
1555                     CIMParamValue *cp = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1556                     CIMValue      *cv = new CIMValue (cp->getValue ());
1557 mark.hamzy  1.20 
1558 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
1559 schuur      1.1  }
1560                  
1561 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName
1562                        (JNIEnv *jEnv, jobject jThs, jlong jP)
1563 mark.hamzy  1.20 {
1564 mark.hamzy  1.62    CIMParamValue *cp  = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1565                     const String  &n   = cp->getParameterName ();
1566                     jstring        str = jEnv->NewStringUTF (n.getCString ());
1567 mark.hamzy  1.20 
1568 mark.hamzy  1.62    return str;
1569 schuur      1.7  }
1570                  
1571 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName
1572                        (JNIEnv *jEnv, jobject jThs, jlong jP, jstring jN)
1573 mark.hamzy  1.20 {
1574 mark.hamzy  1.62    CIMParamValue *cp  = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1575                     const char    *str = jEnv->GetStringUTFChars (jN, NULL);
1576                     String         n (str);
1577                  
1578                     cp->setParameterName (n);
1579 mark.hamzy  1.20 
1580 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
1581 schuur      1.7  }
1582                  
1583 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1finalize
1584                        (JNIEnv *jEnv, jobject jThs, jlong jP)
1585 mark.hamzy  1.20 {
1586 mark.hamzy  1.62    CIMParamValue *cp = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jP);
1587                  
1588                     delete cp;
1589 schuur      1.7  
1590 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jP);
1591 schuur      1.7  }
1592                  
1593 mark.hamzy  1.62 
1594                  // -------------------------------------
1595                  // ---
1596 marek       1.78 // -        CIMClass
1597 mark.hamzy  1.62 // ---
1598                  // -------------------------------------
1599                  
1600                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
1601                    (JNIEnv *jEnv, jobject jThs, jlong jCls)
1602 mark.hamzy  1.20 {
1603 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1604 mark.hamzy  1.20 
1605 mark.hamzy  1.62    if (cls)
1606                     {
1607                        try
1608 mark.hamzy  1.44       {
1609 mark.hamzy  1.62          CIMInstance   *ci     = new CIMInstance (cls->getClassName ());
1610                           CIMObjectPath  copNew = ci->getPath ();
1611 mark.hamzy  1.20 
1612 mark.hamzy  1.62          copNew.setNameSpace (cls->getPath ().getNameSpace ());
1613                           ci->setPath (copNew);
1614                           for (int i = 0, m = cls->getQualifierCount (); i < m; i++)
1615                           {
1616                              try
1617                              {
1618                                 ci->addQualifier (cls->getQualifier (i).clone ());
1619                              }
1620 marek       1.78             catch(Exception e)
1621 mark.hamzy  1.62             {
1622                              }
1623                           }
1624                           for (int i = 0, m = cls->getPropertyCount (); i < m; i++)
1625                           {
1626                              CIMProperty cp = cls->getProperty (i);
1627 schuur      1.7  
1628 mark.hamzy  1.62             ci->addProperty (cp.clone ());
1629 mark.hamzy  1.20 
1630 mark.hamzy  1.62             for (int j = 0, s = cp.getQualifierCount (); j < s; j++)
1631                              {
1632                                 try
1633                                 {
1634                                    ci->getProperty (i).addQualifier (cp.getQualifier (j));
1635                                 }
1636                                 catch (Exception e)
1637                                 {
1638                                 }
1639                              }
1640                           }
1641                           return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);
1642                        }
1643                        Catch (jEnv);
1644 schuur      1.7     }
1645 mark.hamzy  1.20 
1646 schuur      1.7     return 0;
1647                  }
1648                  
1649 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
1650 marek       1.78       (JNIEnv *jEnv,
1651                         jobject jThs,
1652                         jlong jInst,
1653                         jobjectArray jPl,
1654                         jboolean iq,
1655                         jboolean ic,
1656                         jboolean lo)
1657 mark.hamzy  1.20 {
1658 mark.hamzy  1.62    CIMClass *cc   = DEBUG_ConvertJavaToC (jlong, CIMClass*, jInst);
1659                     CIMClass *cf   = 0;
1660                     CIMName   clsn = cc->getClassName ();
1661                  
1662                     if (lo)
1663                     {
1664                        cf = new CIMClass (cc->clone ());
1665 mark.hamzy  1.20 
1666 mark.hamzy  1.62       CIMName clsn = cc->getClassName ();
1667 schuur      1.7  
1668 mark.hamzy  1.62       for (int i = cf->getPropertyCount () - 1; i>= 0; i--)
1669                        {
1670                           if (cf->getProperty (i).getClassOrigin () == clsn)
1671                              cf->removeProperty (i);
1672                        }
1673 mark.hamzy  1.44 
1674 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMClass*, jlong, cf);
1675 schuur      1.7     }
1676 mark.hamzy  1.62    else if (jPl)
1677                     {
1678                        CIMPropertyList pl = getList (jEnv,jPl);
1679                        Array<CIMName>  n  = pl.getPropertyNameArray ();
1680                  
1681                        cf = new CIMClass (clsn, cc->getSuperClassName ());
1682 mark.hamzy  1.20 
1683 mark.hamzy  1.62       for (int i = 0, s = n.size (); i < s; i++)
1684                        {
1685                           Uint32 pos = cc->findProperty (n[i]);
1686 schuur      1.7  
1687 mark.hamzy  1.62          if (pos != PEG_NOT_FOUND)
1688                           {
1689                              if (iq)
1690                              {
1691                                 CIMProperty cp = cc->getProperty (pos).clone ();
1692 schuur      1.7  
1693 mark.hamzy  1.62                if (!ic)
1694                                    cp.setClassOrigin (CIMName ());
1695 schuur      1.7  
1696 mark.hamzy  1.62                cf->addProperty (cp);
1697                              }
1698                              else
1699                              {
1700                                 CIMProperty cp = cc->getProperty (pos);
1701                                 CIMName     co;
1702 mark.hamzy  1.20 
1703 mark.hamzy  1.62                if (ic)
1704                                    co = cp.getClassOrigin ();
1705 mark.hamzy  1.20 
1706 mark.hamzy  1.62                CIMProperty np (cp.getName (),
1707                                                cp.getValue (),
1708                                                cp.getArraySize (),
1709                                                cp.getReferenceClassName (),
1710                                                co,
1711                                                cp.getPropagated ());
1712 mark.hamzy  1.20 
1713 mark.hamzy  1.62                cf->addProperty (np);
1714                              }
1715                           }
1716                        }
1717                        if (iq)
1718                        {
1719                           for (Uint32 i = 0, s = cc->getQualifierCount (); i < s; i++)
1720                           {
1721                              cf->addQualifier (cc->getQualifier (i));
1722                           }
1723                        }
1724 schuur      1.7     }
1725 mark.hamzy  1.62    else if (iq)
1726                     {
1727                        cf = new CIMClass (cc->clone ());
1728 mark.hamzy  1.20 
1729 mark.hamzy  1.62       if (ic)
1730                           return DEBUG_ConvertCToJava (CIMClass*, jlong, cf);
1731 schuur      1.7  
1732 mark.hamzy  1.62       for (int i = cf->getPropertyCount () - 1; i >= 0; i--)
1733                        {
1734                           CIMProperty cp = cf->getProperty (i);
1735 mark.hamzy  1.20 
1736 mark.hamzy  1.62          cp.setClassOrigin (CIMName ());
1737                           cf->removeProperty (i);
1738                           cf->addProperty (cp);
1739                        }
1740 schuur      1.7     }
1741 mark.hamzy  1.62    else
1742                     {
1743                        cf = new CIMClass (clsn, cc->getSuperClassName ());
1744                  
1745                        for (int i = cc->getPropertyCount () - 1; i >= 0; i--)
1746                        {
1747                           CIMProperty cp = cc->getProperty (i);
1748                           CIMName     co;
1749                  
1750                           if (ic)
1751                              co = cp.getClassOrigin ();
1752 schuur      1.7  
1753 mark.hamzy  1.62          CIMProperty np (cp.getName (),
1754                                          cp.getValue (),
1755                                          cp.getArraySize (),
1756                                          cp.getReferenceClassName (),
1757                                          co,
1758                                          cp.getPropagated ());
1759 mark.hamzy  1.20 
1760 mark.hamzy  1.62          cf->addProperty (np);
1761                        }
1762 schuur      1.7     }
1763 mark.hamzy  1.20 
1764 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMClass*, jlong, cf);
1765 schuur      1.7  }
1766                  
1767 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
1768                     (JNIEnv *jEnv, jobject jThs, jlong jCls)
1769 mark.hamzy  1.20 {
1770 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1771 mark.hamzy  1.20 
1772 schuur      1.7     try {
1773 mark.hamzy  1.62       const String &cn = cls->getClassName ().getString ();
1774                        jstring str = jEnv->NewStringUTF (cn.getCString ());
1775 mark.hamzy  1.44 
1776 mark.hamzy  1.62       return str;
1777 schuur      1.7     }
1778 mark.hamzy  1.44    Catch (jEnv);
1779 mark.hamzy  1.20 
1780 schuur      1.7     return 0;
1781                  }
1782                  
1783 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
1784                     (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jN)
1785 mark.hamzy  1.20 {
1786 mark.hamzy  1.62    CIMClass   *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1787                     const char *str = jEnv->GetStringUTFChars (jN, NULL);
1788                     jlong       rv  = 0;
1789                     Uint32      pos = cls->findQualifier (String (str));
1790 schuur      1.7  
1791 mark.hamzy  1.62    if (pos != PEG_NOT_FOUND)
1792                        rv = DEBUG_ConvertCToJava (CIMQualifier*,
1793                                                   jlong,
1794                                                   new CIMQualifier (cls->getQualifier (pos)));
1795 mark.hamzy  1.27 
1796 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
1797 mark.hamzy  1.20 
1798 mark.hamzy  1.62    return rv;
1799                  }
1800 mark.hamzy  1.20 
1801 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
1802                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jobject jVec)
1803                  {
1804                     JMPIjvm::cacheIDs (jEnv);
1805 schuur      1.7  
1806 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1807 mark.hamzy  1.20 
1808 mark.hamzy  1.62    for (int i = 0, s = cls->getQualifierCount (); i < s; i++)
1809                     {
1810                        CIMQualifier *cq   = new CIMQualifier (cls->getQualifier (i));
1811                        jlong         jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jlong, cq);
1812 marek       1.78       jobject       qual = jEnv->NewObject(
1813                                                 JMPIjvm::jv.CIMQualifierClassRef,
1814                                                 JMPIjvm::jv.CIMQualifierNewJ,
1815                                                 jCq);
1816 mark.hamzy  1.20 
1817 mark.hamzy  1.62       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,qual);
1818 schuur      1.1     }
1819 mark.hamzy  1.20 
1820 mark.hamzy  1.62    return jVec;
1821 schuur      1.1  }
1822                  
1823 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
1824                       (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jQ)
1825                  {
1826                     CIMClass   *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1827                     const char *str = jEnv->GetStringUTFChars (jQ,NULL);
1828                     Uint32      pos = cls->findQualifier (String (str));
1829 schuur      1.7  
1830 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jQ,str);
1831 mark.hamzy  1.27 
1832 mark.hamzy  1.62    return (jboolean)(pos != PEG_NOT_FOUND);
1833                  }
1834 schuur      1.3  
1835 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
1836                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jlong jP)
1837                  {
1838                     CIMClass    *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1839                     CIMProperty *p   = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
1840 mark.hamzy  1.20 
1841 mark.hamzy  1.62    try
1842                     {
1843                        cls->addProperty (*p);
1844 schuur      1.1     }
1845 mark.hamzy  1.44    Catch (jEnv);
1846 mark.hamzy  1.62 }
1847 mark.hamzy  1.20 
1848 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
1849                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jobject jVec)
1850 mark.hamzy  1.20 {
1851 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
1852 mark.hamzy  1.20 
1853 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1854 mark.hamzy  1.27 
1855 mark.hamzy  1.62    for (int i = cls->getPropertyCount () - 1; i >= 0; i--)
1856                     {
1857                        cls->removeProperty (i);
1858 schuur      1.7     }
1859 marek       1.78    for (Uint32 i = 0, s = jEnv->CallIntMethod(
1860                                                jVec,
1861                                                JMPIjvm::jv.VectorSize); i < s; i++)
1862 mark.hamzy  1.62    {
1863                        JMPIjvm::checkException (jEnv);
1864 schuur      1.7  
1865 marek       1.78       jobject o = jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
1866                        jlong        jp = jEnv->CallLongMethod(o,JMPIjvm::jv.CIMPropertyCInst);
1867                        CIMProperty *cp = DEBUG_ConvertJavaToC(jlong, CIMProperty*, jp);
1868 mark.hamzy  1.30 
1869 mark.hamzy  1.62       JMPIjvm::checkException (jEnv);
1870 schuur      1.7  
1871 mark.hamzy  1.62       cls->addProperty (*cp);
1872                     }
1873                  }
1874 schuur      1.7  
1875 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
1876                       (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jN)
1877                  {
1878                     CIMClass   *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1879                     const char *str = jEnv->GetStringUTFChars (jN,NULL);
1880                     jlong       rv  = 0;
1881                     Uint32      pos = cls->findProperty (CIMName (str));
1882 schuur      1.7  
1883 mark.hamzy  1.62    if (pos != PEG_NOT_FOUND)
1884                        rv = DEBUG_ConvertCToJava (CIMProperty*,
1885                                                   jlong,
1886                                                   new CIMProperty (cls->getProperty (pos)));
1887 mark.hamzy  1.20 
1888 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
1889 mark.hamzy  1.23 
1890 mark.hamzy  1.62    return rv;
1891                  }
1892 mark.hamzy  1.20 
1893 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
1894                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jobject jVec)
1895                  {
1896                     JMPIjvm::cacheIDs (jEnv);
1897 mark.hamzy  1.20 
1898 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1899 mark.hamzy  1.20 
1900 mark.hamzy  1.62    for (int i = 0, s = cls->getPropertyCount (); i < s; i++)
1901                     {
1902                        CIMProperty *cp   = new CIMProperty (cls->getProperty (i));
1903                        jlong        jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
1904 marek       1.78       jobject      prop = jEnv->NewObject(
1905                                                JMPIjvm::jv.CIMPropertyClassRef,
1906                                                JMPIjvm::jv.CIMPropertyNewJ,
1907                                                jCp);
1908 schuur      1.7  
1909 mark.hamzy  1.62       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
1910 mark.hamzy  1.20    }
1911                  
1912 mark.hamzy  1.62    return jVec;
1913 schuur      1.7  }
1914 schuur      1.1  
1915 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1new
1916                        (JNIEnv *jEnv, jobject jThs, jstring jN)
1917 mark.hamzy  1.20 {
1918 mark.hamzy  1.62    const char *str = jEnv->GetStringUTFChars (jN,NULL);
1919                     CIMClass   *cls = new CIMClass (CIMName (str), CIMName ());
1920 mark.hamzy  1.30 
1921 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
1922 mark.hamzy  1.20 
1923 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMClass*, jlong, cls);
1924                  }
1925 schuur      1.7  
1926 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
1927                        (JNIEnv *jEnv, jobject jThs, jlong jCls)
1928                  {
1929                     CIMClass     *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1930                     const String &cn  = cls->getSuperClassName ().getString ();
1931 schuur      1.3  
1932 mark.hamzy  1.62    jstring str = jEnv->NewStringUTF (cn.getCString ());
1933 mark.hamzy  1.44 
1934 mark.hamzy  1.62    return str;
1935                  }
1936 mark.hamzy  1.20 
1937 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
1938                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jobject jVec)
1939                  {
1940                     JMPIjvm::cacheIDs (jEnv);
1941 mark.hamzy  1.20 
1942 mark.hamzy  1.62    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1943 mark.hamzy  1.20 
1944 mark.hamzy  1.62    if (cls->hasKeys ())
1945                     {
1946                        Array<CIMName> keyNames;
1947 mark.hamzy  1.20 
1948 mark.hamzy  1.62       cls->getKeyNames (keyNames);
1949 schuur      1.7  
1950 mark.hamzy  1.62       for (int i = 0, s = keyNames.size (); i < s; i++)
1951 mark.hamzy  1.43       {
1952 mark.hamzy  1.62          Uint32 pos = cls->findProperty (keyNames[i]);
1953                  
1954                           if (pos != PEG_NOT_FOUND)
1955 mark.hamzy  1.44          {
1956 mark.hamzy  1.62             CIMProperty *cp  = new CIMProperty (cls->getProperty (pos));
1957                              jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
1958                  
1959 marek       1.78             jobject prop = jEnv->NewObject(
1960                                                 JMPIjvm::jv.CIMPropertyClassRef,
1961                                                 JMPIjvm::jv.CIMPropertyNewJ,
1962                                                 jCp);
1963 mark.hamzy  1.20 
1964 mark.hamzy  1.62             jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
1965 mark.hamzy  1.43          }
1966 schuur      1.7        }
1967 schuur      1.1     }
1968 mark.hamzy  1.20 
1969 mark.hamzy  1.62    return jVec;
1970 schuur      1.1  }
1971                  
1972 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
1973                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jN)
1974 mark.hamzy  1.20 {
1975 mark.hamzy  1.62    CIMClass   *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
1976                     const char *str = jEnv->GetStringUTFChars (jN,NULL);
1977                     jlong       rv  = 0;
1978                     Uint32      pos = cls->findMethod (String (str));
1979 mark.hamzy  1.23 
1980 mark.hamzy  1.62    if (pos != PEG_NOT_FOUND)
1981 mark.hamzy  1.44    {
1982 marek       1.78       rv = DEBUG_ConvertCToJava(
1983                                 CIMMethod*,
1984                                 jlong,
1985                                 new CIMMethod(cls->getMethod(pos)));
1986 mark.hamzy  1.44    }
1987 mark.hamzy  1.23 
1988 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
1989 mark.hamzy  1.23 
1990 mark.hamzy  1.62    return rv;
1991                  }
1992 mark.hamzy  1.23 
1993 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
1994                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jlong jClsToBeCompared)
1995                  {
1996 marek       1.78    CIMClass *cls = DEBUG_ConvertJavaToC(jlong, CIMClass*, jCls);
1997                     CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC(
1998                                                     jlong,
1999                                                     CIMClass*,
2000                                                     jClsToBeCompared);
2001 mark.hamzy  1.62    bool      fRc             = false;
2002 mark.hamzy  1.23 
2003 marek       1.78    if (  cls && clsToBeCompared )
2004 mark.hamzy  1.44    {
2005 mark.hamzy  1.62       try
2006 mark.hamzy  1.44       {
2007 mark.hamzy  1.62          fRc = cls->identical (*clsToBeCompared);
2008 mark.hamzy  1.44       }
2009 mark.hamzy  1.62       Catch (jEnv);
2010 mark.hamzy  1.44    }
2011                  
2012 mark.hamzy  1.62    return fRc;
2013                  }
2014 mark.hamzy  1.44 
2015 mark.hamzy  1.67 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1isAssociation
2016                        (JNIEnv *jEnv, jobject jThs, jlong jCls)
2017                  {
2018                     CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
2019                     jboolean  rv  = false;
2020                  
2021                     if (cls)
2022                     {
2023                        try
2024                        {
2025                           rv = cls->isAssociation ();
2026                        }
2027                        Catch (jEnv);
2028                     }
2029                  
2030                     return rv;
2031                  }
2032                  
2033                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1findMethod
2034                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jstring jName)
2035                  {
2036 mark.hamzy  1.67    CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
2037                     jint      rv  = -1;
2038                  
2039                     if (cls)
2040                     {
2041                        const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
2042                  
2043                        try
2044                        {
2045                           CIMName name (cstrName);
2046                  
2047                           rv = cls->findMethod (name);
2048                        }
2049                        Catch (jEnv);
2050                  
2051                        jEnv->ReleaseStringUTFChars (jName, cstrName);
2052                     }
2053                  
2054                     return rv;
2055                  }
2056                  
2057 mark.hamzy  1.67 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethodI
2058                        (JNIEnv *jEnv, jobject jThs, jlong jCls, jint jMethod)
2059                  {
2060                     CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
2061                     jlong     rv  = 0;
2062                  
2063                     if (cls && jMethod >=0)
2064                     {
2065                        try
2066                        {
2067                           CIMMethod cm = cls->getMethod (jMethod);
2068                  
2069                           rv = DEBUG_ConvertCToJava (CIMMethod *, jlong, new CIMMethod (cm));
2070                        }
2071                        Catch (jEnv);
2072                     }
2073                  
2074                     return rv;
2075                  }
2076                  
2077                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethodCount
2078 mark.hamzy  1.67       (JNIEnv *jEnv, jobject jThs, jlong jCls)
2079                  {
2080                     CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
2081                     jint      rv  = 0;
2082                  
2083                     if (cls)
2084                     {
2085                        try
2086                        {
2087                           rv = cls->getMethodCount ();
2088                        }
2089                        Catch (jEnv);
2090                     }
2091                  
2092                     return rv;
2093                  }
2094                  
2095 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
2096                       (JNIEnv *jEnv, jobject jThs, jlong jCls)
2097                  {
2098                     CIMClass *cls = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCls);
2099 mark.hamzy  1.44 
2100 mark.hamzy  1.62    delete cls;
2101 mark.hamzy  1.44 
2102 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jCls);
2103                  }
2104 mark.hamzy  1.44 
2105                  
2106 mark.hamzy  1.62 // -------------------------------------
2107                  // ---
2108 marek       1.78 // -        CIMClient
2109 mark.hamzy  1.62 // ---
2110                  // -------------------------------------
2111 mark.hamzy  1.44 
2112 mark.hamzy  1.62 void checkNs (CIMObjectPath *cop, jlong jNs)
2113                  {
2114                     if (cop->getNameSpace ().isNull ())
2115                     {
2116                        _nameSpace *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
2117 schuur      1.7  
2118 mark.hamzy  1.62       cop->setNameSpace (CIMNamespaceName (cNs->nameSpace ()));
2119 schuur      1.7     }
2120                  }
2121                  
2122 mark.hamzy  1.62 static int normalizeNs (String &ns, String &nsBase, String &lastNsComp)
2123 mark.hamzy  1.20 {
2124 mark.hamzy  1.62    Uint32 n = ns.size ();
2125 mark.hamzy  1.23 
2126 mark.hamzy  1.62    if (ns[n-1] == '/')
2127 mark.hamzy  1.44    {
2128 mark.hamzy  1.62       if (n >= 2)
2129                           ns = ns.subString (0, n-2);
2130                     }
2131                  
2132                     lastNsComp = ns;
2133                     nsBase     = "root";
2134 mark.hamzy  1.44 
2135 mark.hamzy  1.62    n = ns.reverseFind ('/');
2136 mark.hamzy  1.44 
2137 mark.hamzy  1.62    if (n != PEG_NOT_FOUND)
2138                     {
2139                        lastNsComp = ns.subString (n+1);
2140                        nsBase     = ns.subString (0, n);
2141 mark.hamzy  1.44    }
2142                  
2143 mark.hamzy  1.62    return 0;
2144                  }
2145 mark.hamzy  1.44 
2146 mark.hamzy  1.66 Boolean verifyServerCertificate (SSLCertificateInfo &certInfo)
2147                  {
2148                     //
2149                     // If server certificate was found in CA trust store and validated, then
2150                     // return 'true' to accept the certificate, otherwise return 'false'.
2151                     //
2152                     if (certInfo.getResponseCode () == 1)
2153                     {
2154                         return true;
2155                     }
2156                     else
2157                     {
2158                         return false;
2159                     }
2160                  }
2161                  
2162 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
2163                    (JNIEnv *jEnv, jobject jThs, jlong jNs, jstring jUn, jstring jPw)
2164                  {
2165                     _nameSpace *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
2166                     const char *un  = jEnv->GetStringUTFChars (jUn, NULL);
2167                     const char *pw  = jEnv->GetStringUTFChars (jPw, NULL);
2168                     jlong       jCc = 0;
2169 mark.hamzy  1.44 
2170 mark.hamzy  1.66    SSLContext *sslContext = 0; // initialized for unencrypted connection
2171                  
2172 kumpf       1.76 #ifdef PEGASUS_HAS_SSL
2173 mark.hamzy  1.66    if (cNs->isHttps ())
2174                     {
2175                        try
2176                        {
2177                           sslContext = new SSLContext (PEGASUS_SSLCLIENT_CERTIFICATEFILE,
2178                                                        verifyServerCertificate,
2179                                                        PEGASUS_SSLCLIENT_RANDOMFILE);
2180                        }
2181                        catch (Exception &e)
2182                        {
2183 marek       1.78         cerr << "JMPI: Error: could not create SSLContext: "
2184                               << e.getMessage() << endl;
2185 mark.hamzy  1.66         return jCc;
2186                        }
2187                     }
2188 kumpf       1.76 #endif
2189 mark.hamzy  1.66 
2190 mark.hamzy  1.62    try {
2191                        CIMClient *cc = new CIMClient ();
2192 mark.hamzy  1.44 
2193 mark.hamzy  1.66       if (sslContext)
2194                        {
2195                           cc->connect (cNs->hostName (), cNs->port (), *sslContext, un, pw);
2196                        }
2197                        else
2198                        {
2199                           cc->connect (cNs->hostName (), cNs->port (), un, pw);
2200                        }
2201 mark.hamzy  1.23 
2202 mark.hamzy  1.62       jCc = DEBUG_ConvertCToJava (CIMClient*, jlong, cc);
2203 mark.hamzy  1.44    }
2204 mark.hamzy  1.62    Catch (jEnv);
2205 mark.hamzy  1.23 
2206 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jUn, un);
2207                     jEnv->ReleaseStringUTFChars (jPw, pw);
2208 mark.hamzy  1.23 
2209 mark.hamzy  1.66    delete sslContext;
2210                  
2211 mark.hamzy  1.62    return jCc;
2212                  }
2213 mark.hamzy  1.23 
2214 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
2215                    (JNIEnv *jEnv, jobject jThs, jlong jCc)
2216                  {
2217                     CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2218 mark.hamzy  1.23 
2219 mark.hamzy  1.62    try {
2220                        cCc->disconnect ();
2221                     }
2222                     Catch (jEnv);
2223                  }
2224 mark.hamzy  1.23 
2225 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
2226                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean lo,
2227                           jboolean iq, jboolean ic, jobjectArray jPl)
2228                  {
2229                     CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2230                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2231                     CIMPropertyList  pl = getList (jEnv, jPl);
2232 mark.hamzy  1.23 
2233 mark.hamzy  1.62    if (  cCc
2234                        && cop
2235                        )
2236                     {
2237                        try {
2238                           checkNs (cop, jNs);
2239 mark.hamzy  1.23 
2240 mark.hamzy  1.62          CIMClass      cls    = cCc->getClass (cop->getNameSpace (),
2241                                                                 cop->getClassName (),
2242                                                                 (Boolean)lo,
2243                                                                 (Boolean)iq,
2244                                                                 (Boolean)ic,
2245                                                                 pl);
2246                           CIMObjectPath copNew = cls.getPath ();
2247 schuur      1.7  
2248 mark.hamzy  1.62          copNew.setNameSpace (cop->getNameSpace ());
2249                           cls.setPath (copNew);
2250 mark.hamzy  1.23 
2251 mark.hamzy  1.62          return DEBUG_ConvertCToJava (CIMClass*, jlong, new CIMClass (cls));
2252 schuur      1.1        }
2253 mark.hamzy  1.62       Catch (jEnv);
2254 schuur      1.1     }
2255 mark.hamzy  1.20 
2256 schuur      1.7     return 0;
2257 schuur      1.1  }
2258                  
2259 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
2260                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop)
2261 mark.hamzy  1.20 {
2262 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2263                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2264 mark.hamzy  1.23 
2265 mark.hamzy  1.62    try {
2266                        checkNs (cop, jNs);
2267 mark.hamzy  1.23 
2268 mark.hamzy  1.62       cCc->deleteClass (cop->getNameSpace (),
2269                                          cop->getClassName ());
2270 mark.hamzy  1.44    }
2271 mark.hamzy  1.62    Catch (jEnv);
2272                  }
2273 mark.hamzy  1.23 
2274 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
2275                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCl)
2276                  {
2277                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2278                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2279                     CIMClass      *cl  = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCl);
2280 mark.hamzy  1.44 
2281 mark.hamzy  1.62    try {
2282                        cCc->createClass (cop->getNameSpace (), *cl);
2283                     }
2284                     Catch (jEnv);
2285                  }
2286 mark.hamzy  1.44 
2287 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
2288                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCl)
2289                  {
2290                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2291                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2292                     CIMClass      *cl  = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCl);
2293 schuur      1.7  
2294                     try {
2295 mark.hamzy  1.62      checkNs (cop, jNs);
2296 mark.hamzy  1.23 
2297 mark.hamzy  1.62      cCc->modifyClass (cop->getNameSpace (), *cl);
2298 schuur      1.7     }
2299 mark.hamzy  1.44    Catch (jEnv);
2300 schuur      1.7  }
2301 schuur      1.1  
2302 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
2303                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean lo,
2304                           jboolean iq, jboolean ic, jobjectArray jPl)
2305 mark.hamzy  1.20 {
2306 mark.hamzy  1.62    CIMClient        *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2307 mark.hamzy  1.61    CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2308 mark.hamzy  1.44    CIMPropertyList   pl  = getList (jEnv, jPl);
2309                  
2310 mark.hamzy  1.62    try {
2311                        checkNs (cop, jNs);
2312                  
2313                        CIMInstance inst = cCc->getInstance (cop->getNameSpace (),
2314                                                             *cop,
2315                                                             (Boolean)lo,
2316                                                             (Boolean)iq,
2317                                                             (Boolean)ic,
2318                                                             pl);
2319 schuur      1.3  
2320 mark.hamzy  1.62       inst.setPath (*cop);
2321 mark.hamzy  1.23 
2322 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance (inst));
2323 mark.hamzy  1.44    }
2324 mark.hamzy  1.62    Catch (jEnv);
2325 mark.hamzy  1.20 
2326 mark.hamzy  1.62    return 0;
2327                  }
2328                  
2329                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
2330                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop)
2331                  {
2332                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2333                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2334 mark.hamzy  1.20 
2335 mark.hamzy  1.62    try {
2336                        checkNs (cop, jNs);
2337 mark.hamzy  1.44 
2338 mark.hamzy  1.62       cCc->deleteInstance (cop->getNameSpace (), *cop);
2339                     }
2340                     Catch (jEnv);
2341                  }
2342 mark.hamzy  1.44 
2343 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
2344                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCi)
2345                  {
2346                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2347                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2348                     CIMInstance   *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi);
2349 schuur      1.7  
2350 schuur      1.1     try {
2351 mark.hamzy  1.62       checkNs (cop, jNs);
2352                  
2353                        ci->setPath (*cop);
2354 mark.hamzy  1.23 
2355 mark.hamzy  1.62       CIMObjectPath obj = cCc->createInstance (cop->getNameSpace (), *ci);
2356 mark.hamzy  1.23 
2357 marek       1.78       return DEBUG_ConvertCToJava(CIMObjectPath*,jlong,new CIMObjectPath (obj));
2358 schuur      1.1     }
2359 mark.hamzy  1.44    Catch (jEnv);
2360 mark.hamzy  1.20 
2361 schuur      1.7     return 0;
2362 schuur      1.1  }
2363                  
2364 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance
2365                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCi,
2366                           jboolean iq, jobjectArray jPl)
2367 mark.hamzy  1.20 {
2368 mark.hamzy  1.62    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2369                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2370                     CIMInstance     *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi);
2371                     CIMPropertyList  pl  = getList (jEnv, jPl);
2372                  
2373                     try {
2374                        checkNs (cop, jNs);
2375 schuur      1.1  
2376 mark.hamzy  1.62       ci->setPath (*cop);
2377 mark.hamzy  1.37 
2378 mark.hamzy  1.62       cCc->modifyInstance (cop->getNameSpace (), *ci, (Boolean)iq, pl);
2379                     }
2380                     Catch (jEnv);
2381                  }
2382 mark.hamzy  1.37 
2383 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses(
2384                      JNIEnv *jEnv,
2385                      jobject jThs,
2386                      jlong jCc,
2387                      jlong jNs,
2388                      jlong jCop,
2389                      jboolean deep,
2390                      jboolean lo,
2391                      jboolean iq,
2392                      jboolean ic)
2393 mark.hamzy  1.62 {
2394                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2395                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2396 mark.hamzy  1.37 
2397 mark.hamzy  1.62    try {
2398                        checkNs (cop, jNs);
2399 mark.hamzy  1.27 
2400 mark.hamzy  1.62       Array<CIMClass> enm = cCc->enumerateClasses (cop->getNameSpace (),
2401                                                                     cop->getClassName (),
2402                                                                     (Boolean)deep,
2403                                                                     (Boolean)lo,
2404                                                                     (Boolean)iq,
2405                                                                     (Boolean)ic);
2406 mark.hamzy  1.20 
2407 marek       1.78       return DEBUG_ConvertCToJava(
2408                                   Array<CIMClass>*,
2409                                   jlong,
2410                                   new Array<CIMClass> (enm));
2411 mark.hamzy  1.62    }
2412                     Catch (jEnv);
2413 mark.hamzy  1.20 
2414 mark.hamzy  1.62    return 0;
2415                  }
2416 schuur      1.3  
2417 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
2418                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep)
2419                  {
2420                     CIMClient        *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2421                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2422                     CIMNamespaceName  ns  = cop->getNameSpace ();
2423 mark.hamzy  1.20 
2424 mark.hamzy  1.62    try {
2425                        checkNs (cop, jNs);
2426 schuur      1.8  
2427 marek       1.78       Array<CIMName> enm = cCc->enumerateClassNames(ns,
2428                                                                      cop->getClassName(),
2429                                                                      (Boolean)deep);
2430 mark.hamzy  1.62       Array<CIMObjectPath> *enmop = new Array<CIMObjectPath> ();
2431 schuur      1.3  
2432 mark.hamzy  1.62       for (int i = 0, m = enm.size (); i < m; i++)
2433 mark.hamzy  1.37       {
2434 mark.hamzy  1.62          enmop->append (CIMObjectPath (String::EMPTY, ns, enm[i]));
2435 schuur      1.3        }
2436 mark.hamzy  1.62 
2437                        return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, enmop);
2438 schuur      1.3     }
2439 mark.hamzy  1.62    Catch (jEnv);
2440                  
2441                     return 0;
2442 schuur      1.3  }
2443 schuur      1.1  
2444 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
2445                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep)
2446 mark.hamzy  1.21 {
2447 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2448                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2449                  
2450                     try {
2451                        checkNs (cop,jNs);
2452                  
2453 marek       1.78       Array<CIMObjectPath> enm = cCc->enumerateInstanceNames(
2454                                                       cop->getNameSpace(),
2455                                                       cop->getClassName ()); //, (Boolean)deep);
2456                  
2457                        return DEBUG_ConvertCToJava(
2458                                   Array<CIMObjectPath>*,
2459                                   jlong,
2460                                   new Array<CIMObjectPath> (enm));
2461 mark.hamzy  1.62    }
2462                     Catch (jEnv);
2463 mark.hamzy  1.21 
2464 mark.hamzy  1.62    return 0;
2465 mark.hamzy  1.21 }
2466                  
2467 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances(
2468                      JNIEnv *jEnv,
2469                      jobject jThs,
2470                      jlong jCc,
2471                      jlong jNs,
2472                      jlong jCop,
2473                      jboolean deep,
2474                      jboolean lo,
2475                      jboolean iq,
2476                      jboolean ic,
2477                      jobjectArray jPl)
2478 mark.hamzy  1.62 {
2479                     CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2480                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2481                     CIMPropertyList  pl  = getList (jEnv,jPl);
2482                  
2483                     try {
2484                        checkNs (cop, jNs);
2485 schuur      1.1  
2486 mark.hamzy  1.62       CIMPropertyList    props;
2487                        Array<CIMInstance> enm = cCc->enumerateInstances (cop->getNameSpace (),
2488                                                                          cop->getClassName (),
2489                                                                          (Boolean)deep,
2490                                                                          (Boolean)lo,
2491                                                                          (Boolean)iq,
2492                                                                          (Boolean)ic,pl);
2493 mark.hamzy  1.20 
2494 marek       1.78       return DEBUG_ConvertCToJava(
2495                                   Array<CIMInstance>*,
2496                                   jlong,
2497                                   new Array<CIMInstance> (enm));
2498 mark.hamzy  1.62    }
2499                     Catch (jEnv);
2500 mark.hamzy  1.23 
2501 mark.hamzy  1.62    return 0;
2502                  }
2503 mark.hamzy  1.23 
2504 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers
2505                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop)
2506                  {
2507                     CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2508                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2509 mark.hamzy  1.54 
2510 mark.hamzy  1.62    try {
2511                        checkNs (cop, jNs);
2512 mark.hamzy  1.54 
2513 marek       1.78       Array<CIMQualifierDecl> enm=cCc->enumerateQualifiers(cop->getNameSpace());
2514 mark.hamzy  1.54 
2515 marek       1.78       return DEBUG_ConvertCToJava(
2516                                   Array<CIMQualifierDecl>*,
2517                                   jlong,
2518                                   new Array<CIMQualifierDecl> (enm));
2519 schuur      1.1     }
2520 mark.hamzy  1.62    Catch (jEnv);
2521 mark.hamzy  1.20 
2522 schuur      1.1     return 0;
2523                  }
2524                  
2525 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
2526                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop)
2527 mark.hamzy  1.20 {
2528 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2529                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2530 r.kieninger 1.11 
2531 schuur      1.1     try {
2532 mark.hamzy  1.62       checkNs (cop,jNs);
2533                  
2534 marek       1.78       CIMQualifierDecl *val = new CIMQualifierDecl(
2535                                                        cCc->getQualifier(
2536                                                            cop->getNameSpace (),
2537                                                            cop->getClassName ()));
2538 mark.hamzy  1.20 
2539 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, val);
2540 schuur      1.1     }
2541 mark.hamzy  1.44    Catch (jEnv);
2542 mark.hamzy  1.20 
2543 schuur      1.1     return 0;
2544                  }
2545                  
2546 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
2547                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jQ)
2548 mark.hamzy  1.20 {
2549 mark.hamzy  1.62    CIMClient        *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2550                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2551                     CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ);
2552 mark.hamzy  1.20 
2553 mark.hamzy  1.62    try {
2554                        checkNs (cop, jNs);
2555 mark.hamzy  1.20 
2556 mark.hamzy  1.62       cCc->setQualifier (cop->getNameSpace (), *qt);
2557                     }
2558                     Catch (jEnv);
2559 schuur      1.1  }
2560                  
2561 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
2562                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop)
2563 mark.hamzy  1.20 {
2564 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2565                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2566 mark.hamzy  1.20 
2567 mark.hamzy  1.62    try {
2568                        checkNs (cop, jNs);
2569 mark.hamzy  1.20 
2570 mark.hamzy  1.62       cCc->deleteQualifier (cop->getNameSpace (), cop->getClassName ());
2571                     }
2572                     Catch (jEnv);
2573 schuur      1.1  }
2574                  
2575 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
2576                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jPn)
2577 mark.hamzy  1.20 {
2578 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2579                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2580                     const char    *str = jEnv->GetStringUTFChars (jPn, NULL);
2581                     CIMName        pName (str);
2582                     jlong          jCv = 0;
2583 mark.hamzy  1.20 
2584 mark.hamzy  1.62    try {
2585                        checkNs (cop, jNs);
2586 mark.hamzy  1.20 
2587 marek       1.78       CIMValue *val = new CIMValue(cCc->getProperty(
2588                                                              cop->getNameSpace(),
2589                                                              *cop,
2590                                                              pName));
2591 schuur      1.1  
2592 mark.hamzy  1.62       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);
2593                     }
2594                     Catch (jEnv);
2595 mark.hamzy  1.30 
2596 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jPn, str);
2597 schuur      1.5  
2598 mark.hamzy  1.62    return jCv;
2599 schuur      1.1  }
2600                  
2601 marek       1.78 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty(
2602 kumpf       1.87     JNIEnv *jEnv,
2603 marek       1.78     jobject jThs,
2604                      jlong jCc,
2605                      jlong jNs,
2606                      jlong jCop,
2607                      jstring jPn,
2608                      jlong jV)
2609 mark.hamzy  1.20 {
2610 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2611                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2612                     CIMValue      *val = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
2613                     const char    *str = jEnv->GetStringUTFChars (jPn, NULL);
2614                     CIMName        pName (str);
2615                  
2616                     try {
2617                        checkNs (cop,jNs);
2618 mark.hamzy  1.20 
2619 mark.hamzy  1.62       cCc->setProperty (cop->getNameSpace (), *cop, pName, *val);
2620 mark.hamzy  1.50    }
2621                     Catch (jEnv);
2622 mark.hamzy  1.62 
2623                     jEnv->ReleaseStringUTFChars (jPn, str);
2624 schuur      1.5  }
2625                  
2626 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery(
2627                      JNIEnv *jEnv,
2628                      jobject jThs,
2629                      jlong jCc,
2630                      jlong jNs,
2631                      jlong jCop,
2632                      jstring jQuery,
2633                      jstring jQl)
2634 mark.hamzy  1.20 {
2635 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2636                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2637                     const char    *str = jEnv->GetStringUTFChars (jQuery, NULL);
2638                     String         query (str);
2639 mark.hamzy  1.30 
2640 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jQuery, str);
2641 mark.hamzy  1.20 
2642 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jQl, NULL);
2643 mark.hamzy  1.20 
2644 mark.hamzy  1.62    String ql (str);
2645 mark.hamzy  1.20 
2646 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jQl, str);
2647 schuur      1.5  
2648 mark.hamzy  1.62    try {
2649                        checkNs (cop, jNs);
2650 mark.hamzy  1.30 
2651 mark.hamzy  1.62       Array<CIMObject>    enm     = cCc->execQuery (cop->getNameSpace (),
2652                                                                      ql,
2653                                                                      query);
2654                        Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
2655 schuur      1.5  
2656 mark.hamzy  1.62       for (int i = 0,m = enm.size (); i<m; i++)
2657                        {
2658                           enmInst->append (CIMInstance (enm[i]));
2659                        }
2660 mark.hamzy  1.20 
2661 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
2662 schuur      1.5     }
2663 mark.hamzy  1.62    Catch (jEnv);
2664 mark.hamzy  1.20 
2665 mark.hamzy  1.62    return 0;
2666 schuur      1.5  }
2667                  
2668 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod(
2669                      JNIEnv *jEnv,
2670                      jobject jThs,
2671                      jlong jCc,
2672                      jlong jNs,
2673                      jlong jCop,
2674                      jstring jMn,
2675                      jobject jIn,
2676                      jobject jOut)
2677 mark.hamzy  1.20 {
2678 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
2679 mark.hamzy  1.20 
2680 marek       1.78    CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2681                     CIMObjectPath *cop = DEBUG_ConvertJavaToC(jlong, CIMObjectPath*, jCop);
2682                     const char *str = jEnv->GetStringUTFChars (jMn, NULL);
2683                     CIMName method (str);
2684                     jlong jCv = 0;
2685                     Array<CIMParamValue> in;
2686                     Array<CIMParamValue> out;
2687 mark.hamzy  1.20 
2688 marek       1.78    for (int i = 0,m = jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i<m; i++)
2689 mark.hamzy  1.62    {
2690                         JMPIjvm::checkException (jEnv);
2691 schuur      1.1  
2692 marek       1.78        jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
2693 mark.hamzy  1.20 
2694 mark.hamzy  1.62        JMPIjvm::checkException (jEnv);
2695 mark.hamzy  1.20 
2696 marek       1.78        jlong jp = jEnv->CallLongMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
2697                         CIMProperty *p  = DEBUG_ConvertJavaToC(jlong, CIMProperty*, jp);
2698 schuur      1.1  
2699 mark.hamzy  1.62        JMPIjvm::checkException (jEnv);
2700 mark.hamzy  1.30 
2701 mark.hamzy  1.62        in.append (CIMParamValue (p->getName ().getString (),p->getValue ()));
2702                     }
2703 mark.hamzy  1.20 
2704 mark.hamzy  1.62    try {
2705                        checkNs (cop, jNs);
2706 mark.hamzy  1.56 
2707 marek       1.78       CIMValue *val = new CIMValue(
2708                                                cCc->invokeMethod(
2709                                                         cop->getNameSpace(),
2710                                                         *cop,
2711                                                         method,
2712                                                         in,
2713                                                         out));
2714 mark.hamzy  1.56 
2715 mark.hamzy  1.62       for (int i = 0,m = out.size (); i<m; i++)
2716 mark.hamzy  1.44       {
2717 mark.hamzy  1.62          const CIMParamValue &parm = out[i];
2718 marek       1.78          const CIMValue v = parm.getValue ();
2719                           CIMProperty *p = new CIMProperty(
2720                                                    parm.getParameterName(),
2721                                                    v,
2722                                                    v.getArraySize());
2723                           jlong jp = DEBUG_ConvertCToJava (CIMProperty*, jlong, p);
2724                           jobject prop = jEnv->NewObject(
2725                                              JMPIjvm::jv.CIMPropertyClassRef,
2726                                              JMPIjvm::jv.CIMPropertyNewJ,
2727                                              jp);
2728 mark.hamzy  1.56 
2729 mark.hamzy  1.62          jEnv->CallVoidMethod (jOut,JMPIjvm::jv.VectorAddElement,prop);
2730                        }
2731 mark.hamzy  1.20 
2732 mark.hamzy  1.62       jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);
2733                     }
2734                     Catch (jEnv);
2735 mark.hamzy  1.20 
2736 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jMn,str);
2737 mark.hamzy  1.20 
2738 mark.hamzy  1.62    return jCv;
2739 schuur      1.1  }
2740                  
2741 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
2742                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jMn,
2743                          jobjectArray jIn, jobjectArray jOut)
2744 mark.hamzy  1.20 {
2745 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
2746                  
2747 marek       1.78    CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2748                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2749                     const char *str = jEnv->GetStringUTFChars (jMn, NULL);
2750                     CIMName method (str);
2751                     jlong jCv = 0;
2752 mark.hamzy  1.62    Array<CIMParamValue> in;
2753                     Array<CIMParamValue> out;
2754 mark.hamzy  1.20 
2755 mark.hamzy  1.62    if (jIn)
2756 mark.hamzy  1.44    {
2757 mark.hamzy  1.62       for (int i = 0, m = jEnv->GetArrayLength (jIn); i < m; i++)
2758                        {
2759                            JMPIjvm::checkException (jEnv);
2760                  
2761                            jobject jArg = jEnv->GetObjectArrayElement (jIn, i);
2762 mark.hamzy  1.20 
2763 mark.hamzy  1.62           JMPIjvm::checkException (jEnv);
2764 mark.hamzy  1.20 
2765 marek       1.78           jlong jp = jEnv->CallLongMethod (jArg,JMPIjvm::jv.CIMArgumentCInst);
2766                            CIMParamValue *p = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jp);
2767 schuur      1.1  
2768 mark.hamzy  1.62           JMPIjvm::checkException (jEnv);
2769 mark.hamzy  1.50 
2770 mark.hamzy  1.62           in.append (*p);
2771 mark.hamzy  1.50       }
2772                     }
2773 mark.hamzy  1.62    try {
2774                        checkNs (cop,jNs);
2775                  
2776                        CIMValue *val = new CIMValue (cCc->invokeMethod (cop->getNameSpace (),
2777                                                                         *cop,
2778                                                                         method,
2779                                                                         in,
2780                                                                         out));
2781 mark.hamzy  1.20 
2782 mark.hamzy  1.62       if (jOut)
2783                        {
2784 marek       1.78          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut);i<m && i<o;i++)
2785 mark.hamzy  1.62          {
2786                              CIMParamValue *parm  = new CIMParamValue (out[i]);
2787 marek       1.78             jlong jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);
2788 schuur      1.1  
2789 marek       1.78             jEnv->SetObjectArrayElement(
2790                                  jOut,
2791                                  i,
2792                                  jEnv->NewObject(
2793                                      JMPIjvm::jv.CIMArgumentClassRef,
2794                                      JMPIjvm::jv.CIMArgumentNewJ,
2795                                      jParm));
2796 mark.hamzy  1.62          }
2797                        }
2798                        jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val);
2799                     }
2800                     Catch (jEnv);
2801 mark.hamzy  1.20 
2802 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jMn, str);
2803 mark.hamzy  1.20 
2804 mark.hamzy  1.62    return jCv;
2805 schuur      1.1  }
2806                  
2807 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames(
2808                      JNIEnv *jEnv,
2809                      jobject jThs,
2810                      jlong jCc,
2811                      jlong jNs,
2812                      jlong jCop,
2813                      jstring jAssocClass,
2814                      jstring jResultClass,
2815                      jstring jRole,
2816                      jstring jResultRole)
2817 mark.hamzy  1.20 {
2818 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2819                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2820                     const char    *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
2821                  
2822                     CIMName assocClass;
2823 schuur      1.7  
2824 mark.hamzy  1.62    if (  str
2825                        && *str
2826                        )
2827 mark.hamzy  1.44    {
2828 mark.hamzy  1.62       if (CIMName::legal (str))
2829 mark.hamzy  1.44       {
2830 mark.hamzy  1.62          assocClass = str;
2831 mark.hamzy  1.44       }
2832 mark.hamzy  1.62       else
2833 mark.hamzy  1.44       {
2834 marek       1.78          jobject ev = jEnv->NewObject(
2835                                                  JMPIjvm::jv.CIMExceptionClassRef,
2836                                                  JMPIjvm::jv.CIMExceptionNewISt,
2837                                                  (jint)4, // CIM_ERR_INVALID_PARAMETER
2838                                                  jEnv->NewStringUTF(
2839                                                      "Invalid association class name"));
2840 mark.hamzy  1.44 
2841 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
2842 mark.hamzy  1.23 
2843 mark.hamzy  1.62          return 0;
2844                        }
2845                     }
2846 mark.hamzy  1.23 
2847 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass,str);
2848 mark.hamzy  1.23 
2849 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultClass, NULL);
2850 mark.hamzy  1.23 
2851 mark.hamzy  1.62    CIMName resultClass;
2852 mark.hamzy  1.23 
2853 mark.hamzy  1.62    if (  str
2854                        && *str
2855                        )
2856                     {
2857                        if (CIMName::legal (str))
2858                        {
2859                           resultClass = str;
2860 schuur      1.7        }
2861 mark.hamzy  1.62       else
2862 mark.hamzy  1.44       {
2863 mark.hamzy  1.62          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
2864                                                         JMPIjvm::jv.CIMExceptionNewISt,
2865                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
2866 marek       1.78                                        jEnv->NewStringUTF(
2867                                                             "Invalid result class name"));
2868 mark.hamzy  1.23 
2869 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
2870 mark.hamzy  1.23 
2871 mark.hamzy  1.62          return 0;
2872 schuur      1.7        }
2873                     }
2874 mark.hamzy  1.23 
2875 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultClass, str);
2876 mark.hamzy  1.23 
2877 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
2878 mark.hamzy  1.23 
2879 mark.hamzy  1.62    String role (str);
2880 mark.hamzy  1.23 
2881 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
2882 schuur      1.7  
2883 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultRole, NULL);
2884 schuur      1.7  
2885 mark.hamzy  1.62    String resultRole (str);
2886 schuur      1.1  
2887 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultRole, str);
2888 schuur      1.1  
2889 mark.hamzy  1.62    try {
2890                        checkNs (cop,jNs);
2891 schuur      1.1  
2892 mark.hamzy  1.62       Array<CIMObjectPath> enm = cCc->associatorNames (cop->getNameSpace (),
2893                                                                        *cop,
2894                                                                        assocClass,
2895                                                                        resultClass,
2896                                                                        role,
2897                                                                        resultRole);
2898 marek       1.78       return DEBUG_ConvertCToJava(
2899                            Array<CIMObjectPath>*,
2900                            jlong,
2901                            new Array<CIMObjectPath> (enm));
2902 mark.hamzy  1.62    }
2903                     Catch (jEnv);
2904 schuur      1.1  
2905 mark.hamzy  1.62    return 0;
2906 schuur      1.1  }
2907                  
2908 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1associators(
2909                      JNIEnv *jEnv,
2910                      jobject jThs,
2911                      jlong jCc,
2912 kumpf       1.87     jlong jNs,
2913 marek       1.78     jlong jCop,
2914                      jstring jAssocClass,
2915                      jstring jResultClass,
2916                      jstring jRole,
2917                      jstring jResultRole,
2918                      jboolean includeQualifiers,
2919                      jboolean includeClassOrigin,
2920                      jobjectArray jPl)
2921 mark.hamzy  1.20 {
2922 mark.hamzy  1.62    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
2923                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
2924                     CIMPropertyList  pl  = getList (jEnv, jPl);
2925                     const char      *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
2926 mark.hamzy  1.20 
2927 mark.hamzy  1.62    CIMName assocClass;
2928 mark.hamzy  1.27 
2929 mark.hamzy  1.62    if (  str
2930                        && *str
2931 mark.hamzy  1.52       )
2932                     {
2933 mark.hamzy  1.62       if (CIMName::legal (str))
2934                        {
2935                           assocClass = str;
2936                        }
2937                        else
2938                        {
2939 marek       1.78          jobject ev = jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,
2940 mark.hamzy  1.62                                        JMPIjvm::jv.CIMExceptionNewISt,
2941                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
2942 marek       1.78                                        jEnv->NewStringUTF(
2943                                                             "Invalid association class name"));
2944 mark.hamzy  1.27 
2945 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
2946 mark.hamzy  1.52 
2947 mark.hamzy  1.62          return 0;
2948 schuur      1.1        }
2949                     }
2950                  
2951 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
2952 schuur      1.1  
2953 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultClass, NULL);
2954 mark.hamzy  1.52 
2955 mark.hamzy  1.62    CIMName resultClass;
2956 mark.hamzy  1.52 
2957 mark.hamzy  1.62    if (  str
2958                        && *str
2959                        )
2960 mark.hamzy  1.52    {
2961 mark.hamzy  1.62       if (CIMName::legal (str))
2962                        {
2963                           resultClass = str;
2964                        }
2965                        else
2966 mark.hamzy  1.52       {
2967 mark.hamzy  1.62          jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
2968                                                         JMPIjvm::jv.CIMExceptionNewISt,
2969                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
2970 marek       1.78                                        jEnv->NewStringUTF(
2971                                                             "Invalid result class name"));
2972 mark.hamzy  1.62 
2973                           jEnv->Throw ((jthrowable)ev);
2974                  
2975                           return 0;
2976                        }
2977                     }
2978 mark.hamzy  1.52 
2979 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultClass, str);
2980 mark.hamzy  1.52 
2981 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
2982 mark.hamzy  1.52 
2983 mark.hamzy  1.62    String role (str);
2984 mark.hamzy  1.52 
2985 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
2986 mark.hamzy  1.52 
2987 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultRole, NULL);
2988 mark.hamzy  1.52 
2989 mark.hamzy  1.62    String resultRole (str);
2990 schuur      1.5  
2991 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultRole, str);
2992 mark.hamzy  1.20 
2993 schuur      1.1     try {
2994 mark.hamzy  1.62       checkNs (cop, jNs);
2995                  
2996                        Array<CIMObject> enm = cCc->associators (cop->getNameSpace (),
2997                                                                 *cop,
2998                                                                 assocClass,
2999                                                                 resultClass,
3000                                                                 role,
3001                                                                 resultRole,
3002                                                                 (Boolean)includeQualifiers,
3003                                                                 (Boolean)includeClassOrigin,
3004                                                                 pl);
3005                        Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
3006 mark.hamzy  1.23 
3007 mark.hamzy  1.62       for (int i = 0,m = enm.size (); i<m; i++)
3008 mark.hamzy  1.27       {
3009 mark.hamzy  1.62          enmInst->append (CIMInstance (enm[i]));
3010                        }
3011 mark.hamzy  1.23 
3012 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
3013 schuur      1.1     }
3014 mark.hamzy  1.44    Catch (jEnv);
3015 mark.hamzy  1.20 
3016 mark.hamzy  1.62    return 0;
3017 schuur      1.1  }
3018                  
3019 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
3020                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop,
3021                     jstring jAssocClass, jstring jRole)
3022 mark.hamzy  1.20 {
3023 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3024                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
3025                     const char    *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
3026 mark.hamzy  1.30 
3027 mark.hamzy  1.62    CIMName assocClass;
3028 schuur      1.5  
3029 mark.hamzy  1.62    if (  str
3030                        && *str
3031 mark.hamzy  1.56       )
3032 mark.hamzy  1.52    {
3033 mark.hamzy  1.62       if (CIMName::legal (str))
3034                        {
3035                           assocClass = str;
3036                        }
3037                        else
3038                        {
3039                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
3040                                                         JMPIjvm::jv.CIMExceptionNewISt,
3041                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
3042 marek       1.78                                        jEnv->NewStringUTF(
3043                                                             "Invalid association class name"));
3044 mark.hamzy  1.52 
3045 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
3046 mark.hamzy  1.52 
3047 mark.hamzy  1.62          return 0;
3048 mark.hamzy  1.52       }
3049 mark.hamzy  1.62    }
3050 mark.hamzy  1.52 
3051 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
3052 mark.hamzy  1.52 
3053 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
3054 mark.hamzy  1.52 
3055 mark.hamzy  1.62    String role (str);
3056 mark.hamzy  1.52 
3057 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
3058 mark.hamzy  1.20 
3059 mark.hamzy  1.62    try {
3060                        checkNs (cop, jNs);
3061 mark.hamzy  1.20 
3062 mark.hamzy  1.62       Array<CIMObjectPath> enm = cCc->referenceNames (cop->getNameSpace (),
3063                                                                        *cop,
3064                                                                        assocClass,
3065                                                                        role);
3066 mark.hamzy  1.52 
3067 marek       1.78       return DEBUG_ConvertCToJava(
3068                            Array<CIMObjectPath>*,
3069                            jlong,
3070                            new Array<CIMObjectPath> (enm));
3071 schuur      1.1     }
3072 mark.hamzy  1.62    Catch (jEnv);
3073 schuur      1.1  
3074 mark.hamzy  1.62    return 0;
3075 schuur      1.1  }
3076                  
3077 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1references
3078                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop,
3079                     jstring jAssocClass, jstring jRole,
3080                     jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
3081 mark.hamzy  1.20 {
3082 mark.hamzy  1.62    CIMClient       *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3083                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
3084                     CIMPropertyList  pl  = getList (jEnv, jPl);
3085                     const char      *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
3086 mark.hamzy  1.20 
3087 mark.hamzy  1.62    CIMName assocClass;
3088 mark.hamzy  1.20 
3089 mark.hamzy  1.62    if (  str
3090                        && *str
3091                        )
3092                     {
3093                        if (CIMName::legal (str))
3094                        {
3095                           assocClass = str;
3096                        }
3097                        else
3098                        {
3099                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
3100                                                         JMPIjvm::jv.CIMExceptionNewISt,
3101                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
3102 marek       1.78                                        jEnv->NewStringUTF(
3103                                                             "Invalid association class name"));
3104 mark.hamzy  1.62 
3105                           jEnv->Throw ((jthrowable)ev);
3106 schuur      1.1  
3107 mark.hamzy  1.62          return 0;
3108                        }
3109                     }
3110 mark.hamzy  1.20 
3111 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
3112                     str = jEnv->GetStringUTFChars (jRole, NULL);
3113 mark.hamzy  1.52 
3114 mark.hamzy  1.62    String role (str);
3115 mark.hamzy  1.52 
3116 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
3117 mark.hamzy  1.52 
3118 mark.hamzy  1.62    try {
3119                        checkNs (cop, jNs);
3120 mark.hamzy  1.52 
3121 mark.hamzy  1.62       Array<CIMObject> enm = cCc->references (cop->getNameSpace (),
3122                                                                *cop,
3123                                                                assocClass,
3124                                                                role,
3125                                                                (Boolean)includeQualifiers,
3126                                                                (Boolean)includeClassOrigin,
3127                                                                pl);
3128                        Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
3129 mark.hamzy  1.52 
3130 mark.hamzy  1.62       for (int i = 0, m = enm.size (); i < m; i++)
3131                        {
3132                           enmInst->append (CIMInstance (enm[i]));
3133 mark.hamzy  1.52       }
3134 mark.hamzy  1.62 
3135                        return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
3136 schuur      1.1     }
3137 mark.hamzy  1.62    Catch (jEnv);
3138 mark.hamzy  1.20 
3139 mark.hamzy  1.62    return 0;
3140 schuur      1.1  }
3141                  
3142 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
3143                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jstring jNs)
3144 mark.hamzy  1.20 {
3145 mark.hamzy  1.62    CIMClient  *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3146                     const char *str = jEnv->GetStringUTFChars (jNs, NULL);
3147                     String      ns (str);
3148                  
3149                     jEnv->ReleaseStringUTFChars (jNs, str);
3150                  
3151                     String lastNsComp;
3152                     String nsBase;
3153                  
3154                     normalizeNs (ns, nsBase, lastNsComp);
3155                  
3156                     CIMInstance newInstance (CIMName ("__Namespace"));
3157 marek       1.83    newInstance.addProperty(CIMProperty(PEGASUS_PROPERTYNAME_NAME, lastNsComp));
3158 mark.hamzy  1.20 
3159 mark.hamzy  1.62    try {
3160                        cCc->createInstance (CIMNamespaceName (nsBase), newInstance);
3161                     }
3162                     Catch (jEnv);
3163 schuur      1.1  }
3164                  
3165 marek       1.78 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces(
3166                      JNIEnv *jEnv,
3167                      jobject jThs,
3168 kumpf       1.87     jlong jCc,
3169 marek       1.78     jlong jCop,
3170                      jboolean deep,
3171                      jobject jVec)
3172 mark.hamzy  1.20 {
3173 mark.hamzy  1.44    JMPIjvm::cacheIDs (jEnv);
3174 mark.hamzy  1.30 
3175 mark.hamzy  1.62    CIMClient     *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3176                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
3177                     String         ns  = cop->getNameSpace ().getString ();
3178                  
3179                     try {
3180 marek       1.78       Array<CIMObjectPath> enm = cCc->enumerateInstanceNames(
3181                                                            cop->getNameSpace(),
3182                                                            CIMName("__Namespace"));
3183 mark.hamzy  1.62 
3184                        for (int i = 0, s = enm.size (); i < s; i++)
3185                        {
3186                           CIMObjectPath&              cop = enm[i];
3187                           const Array<CIMKeyBinding>& kb  = cop.getKeyBindings ();
3188                           const String&               n   = kb[0].getValue ();
3189 mark.hamzy  1.16 
3190 mark.hamzy  1.62          if (!deep && n.find ('/') != PEG_NOT_FOUND)
3191                              continue;
3192 mark.hamzy  1.16 
3193 mark.hamzy  1.62          String  x   = ns+"/"+n;
3194                           jstring str = jEnv->NewStringUTF (x.getCString ());
3195 mark.hamzy  1.16 
3196 mark.hamzy  1.62          jEnv->CallVoidMethod (jVec, JMPIjvm::jv.VectorAddElement, str);
3197                        }
3198 schuur      1.1     }
3199 mark.hamzy  1.62    Catch (jEnv);
3200 mark.hamzy  1.16 
3201 schuur      1.1     return jVec;
3202                  }
3203                  
3204 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
3205                    (JNIEnv *jEnv, jobject jThs, jlong jCc, jstring jNs)
3206 mark.hamzy  1.20 {
3207 mark.hamzy  1.62    CIMClient  *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3208                     const char *str = jEnv->GetStringUTFChars (jNs,NULL);
3209                     String      ns (str);
3210 mark.hamzy  1.20 
3211 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jNs,str);
3212 mark.hamzy  1.20 
3213 mark.hamzy  1.62    String lastNsComp;
3214                     String nsBase;
3215 schuur      1.1  
3216 mark.hamzy  1.62    normalizeNs (ns,nsBase,lastNsComp);
3217 schuur      1.7  
3218 mark.hamzy  1.62    CIMObjectPath        cop (String::EMPTY,
3219                                               CIMNamespaceName (nsBase),
3220                                               CIMName ("__Namespace"));
3221                     Array<CIMKeyBinding> kb;
3222 mark.hamzy  1.56 
3223 marek       1.83    kb.append (CIMKeyBinding (PEGASUS_PROPERTYNAME_NAME,CIMValue (lastNsComp)));
3224 mark.hamzy  1.62    cop.setKeyBindings (kb);
3225 mark.hamzy  1.56 
3226 mark.hamzy  1.62    try {
3227                        cCc->deleteInstance (CIMNamespaceName (nsBase), cop);
3228 schuur      1.7     }
3229 mark.hamzy  1.62    Catch (jEnv);
3230                  }
3231 mark.hamzy  1.56 
3232 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1finalize
3233                     (JNIEnv *jEnv, jobject jThs, jlong jCc)
3234                  {
3235                     CIMClient  *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc);
3236 mark.hamzy  1.56 
3237 mark.hamzy  1.62    delete cCc;
3238 mark.hamzy  1.56 
3239 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jCc);
3240                  }
3241 mark.hamzy  1.56 
3242                  
3243 mark.hamzy  1.62 // -------------------------------------
3244                  // ---
3245 marek       1.78 // -        CIMDataType
3246 mark.hamzy  1.62 // ---
3247                  // -------------------------------------
3248 mark.hamzy  1.56 
3249 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
3250                    (JNIEnv *jEnv, jobject jThs, jint type)
3251                  {
3252                    return DEBUG_ConvertCToJava (_dataType*, jlong, new _dataType (type));
3253                  }
3254 mark.hamzy  1.56 
3255 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
3256                    (JNIEnv *jEnv, jobject jThs, jint type, jint size)
3257                  {
3258                    return DEBUG_ConvertCToJava (_dataType*, jlong, new _dataType (type,size));
3259                  }
3260 mark.hamzy  1.56 
3261 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
3262                    (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)
3263                  {
3264                     const char *ref   = jEnv->GetStringUTFChars (jRef,NULL);
3265 marek       1.78    jlong cInst = DEBUG_ConvertCToJava(
3266                                       _dataType*,
3267                                       jlong,
3268                                       new _dataType(type,String (ref)));
3269 mark.hamzy  1.56 
3270 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRef,ref);
3271 mark.hamzy  1.56 
3272 mark.hamzy  1.62    return cInst;
3273                  }
3274 mark.hamzy  1.56 
3275 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
3276                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3277                  {
3278                     _dataType *dt = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3279 mark.hamzy  1.56 
3280 mark.hamzy  1.62    return dt->_reference == true;
3281                  }
3282 mark.hamzy  1.56 
3283 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
3284                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3285                  {
3286                     _dataType *dt = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3287 mark.hamzy  1.56 
3288 mark.hamzy  1.62    return dt->_array == true;
3289                  }
3290 mark.hamzy  1.56 
3291 mark.hamzy  1.62 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
3292                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3293                  {
3294                     _dataType *dt = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3295 mark.hamzy  1.56 
3296 mark.hamzy  1.62    return dt->_type;
3297 schuur      1.7  }
3298 schuur      1.1  
3299 mark.hamzy  1.62 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
3300                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3301 mark.hamzy  1.40 {
3302 mark.hamzy  1.62    _dataType *dt = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3303 mark.hamzy  1.40 
3304 mark.hamzy  1.62    return dt->_size;
3305                  }
3306 mark.hamzy  1.40 
3307 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
3308                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3309                  {
3310                     _dataType *dt  = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3311                     jstring    str = jEnv->NewStringUTF (dt->_refClass.getCString ());
3312 mark.hamzy  1.40 
3313 mark.hamzy  1.62    return str;
3314 mark.hamzy  1.40 }
3315                  
3316 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
3317                    (JNIEnv *jEnv, jobject jThs, jlong jDt)
3318 mark.hamzy  1.40 {
3319 mark.hamzy  1.62    _dataType *dt  = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3320                     jstring    str = NULL;
3321                  
3322                     if (dt->_type & 0x10)
3323                     {
3324                        bool   fSuccess = false;
3325 marek       1.78       String tmp = _dataType::convertJavaTypeToChars(dt->_type-0x10, &fSuccess);
3326 mark.hamzy  1.62 
3327                        if (!fSuccess)
3328                           return str;
3329                  
3330                        tmp = tmp + "[]";
3331 mark.hamzy  1.40 
3332 mark.hamzy  1.62       str = jEnv->NewStringUTF (tmp.getCString ());
3333                     }
3334                     else if (dt->_type == 0x20 + 1) // REFERENCE
3335 mark.hamzy  1.40    {
3336 mark.hamzy  1.62       String tmp = dt->_refClass + " REF";
3337                  
3338                        str = jEnv->NewStringUTF (tmp.getCString ());
3339 mark.hamzy  1.40    }
3340 mark.hamzy  1.62    else
3341                     {
3342                        bool  fSuccess = false;
3343                        char *tmp      = _dataType::convertJavaTypeToChars (dt->_type, &fSuccess);
3344 mark.hamzy  1.40 
3345 mark.hamzy  1.62       if (!fSuccess)
3346                           return str;
3347 mark.hamzy  1.40 
3348 mark.hamzy  1.62       str = jEnv->NewStringUTF (tmp);
3349 mark.hamzy  1.40    }
3350                  
3351 mark.hamzy  1.62    return str;
3352 mark.hamzy  1.40 }
3353                  
3354 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDataType__1finalize
3355                        (JNIEnv *jEnv, jobject jThs, jlong jDt)
3356 mark.hamzy  1.40 {
3357 mark.hamzy  1.62    _dataType *dt = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
3358 mark.hamzy  1.40 
3359 mark.hamzy  1.62    delete dt;
3360 mark.hamzy  1.40 
3361 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jDt);
3362                  }
3363 mark.hamzy  1.40 
3364                  
3365 schuur      1.1  // -------------------------------------
3366                  // ---
3367 marek       1.78 // -        CIMDateTime
3368 schuur      1.1  // ---
3369                  // -------------------------------------
3370                  
3371 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
3372                        (JNIEnv *jEnv, jobject jThs, jstring jN)
3373 mark.hamzy  1.20 {
3374 mark.hamzy  1.62    const char  *str  = jEnv->GetStringUTFChars (jN, NULL);
3375                     CIMDateTime *dt   = 0;
3376                     String       date;
3377                  
3378                     if (  str
3379                        && *str
3380                        )
3381                     {
3382                        date = str;
3383                     }
3384                  
3385                     jEnv->ReleaseStringUTFChars (jN, str);
3386 mark.hamzy  1.20 
3387 mark.hamzy  1.62    try
3388                     {
3389                        dt = new CIMDateTime (date);
3390                     }
3391                     Catch (jEnv);
3392 mark.hamzy  1.20 
3393 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMDateTime*, jlong, dt);
3394 schuur      1.1  }
3395                  
3396 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
3397 mark.hamzy  1.20       (JNIEnv *jEnv, jobject jThs)
3398                  {
3399 mark.hamzy  1.62    CIMDateTime *dt = new CIMDateTime (CIMDateTime::getCurrentDateTime ());
3400                  
3401                     return DEBUG_ConvertCToJava (CIMDateTime*, jlong, dt);
3402 schuur      1.1  }
3403                  
3404 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
3405                        (JNIEnv *jEnv, jobject jThs, jlong jC, jlong jD)
3406 mark.hamzy  1.20 {
3407 mark.hamzy  1.62    CIMDateTime *ct = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);
3408                     CIMDateTime *dt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);
3409 mark.hamzy  1.67    jboolean     rv  = 0;
3410 mark.hamzy  1.20 
3411 mark.hamzy  1.62    if (  ct
3412                        && dt
3413                        )
3414                     {
3415 mark.hamzy  1.67       rv = (jboolean)(ct->getDifference (*ct, *dt) < 0);
3416 mark.hamzy  1.62    }
3417 mark.hamzy  1.27 
3418 mark.hamzy  1.67    return rv;
3419 schuur      1.1  }
3420                  
3421 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1before
3422                        (JNIEnv *jEnv, jobject jThs, jlong jC, jlong jD)
3423 mark.hamzy  1.20 {
3424 mark.hamzy  1.62    CIMDateTime *ct  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jC);
3425                     CIMDateTime *dt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jD);
3426 mark.hamzy  1.67    jboolean     rv  = 0;
3427 schuur      1.1  
3428 mark.hamzy  1.62    if (  ct
3429                        && dt
3430                        )
3431                     {
3432 mark.hamzy  1.67       rv = (jboolean)(ct->getDifference (*ct, *dt) > 0);
3433 schuur      1.1     }
3434                  
3435 mark.hamzy  1.67    return rv;
3436 schuur      1.1  }
3437                  
3438 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
3439                        (JNIEnv *jEnv, jobject jThs, jlong jDT)
3440 mark.hamzy  1.20 {
3441 mark.hamzy  1.62    CIMDateTime *cdt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
3442 mark.hamzy  1.20 
3443 mark.hamzy  1.62    delete cdt;
3444 mark.hamzy  1.54 
3445 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jDT);
3446                  }
3447 mark.hamzy  1.54 
3448 dave.sudlik 1.74 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDateTime__1getCIMString
3449                        (JNIEnv *jEnv, jobject jThs, jlong jDT)
3450                  {
3451                     CIMDateTime *cdt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
3452                     jstring      jRet = 0;
3453                  
3454                     if (cdt)
3455                     {
3456                        String dateString = cdt->toString ();
3457                  
3458                        if (dateString.size () > 0)
3459                        {
3460                           jRet = jEnv->NewStringUTF (dateString.getCString ());
3461                        }
3462                     }
3463                  
3464                     return jRet;
3465                  }
3466                  
3467                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMDateTime__1getMicroseconds
3468                        (JNIEnv *jEnv, jobject jThs, jlong jDT)
3469 dave.sudlik 1.74 {
3470                     CIMDateTime *cdt  = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
3471                     jlong        jRet = 0;
3472                  
3473                     if (cdt)
3474                     {
3475                        // Convert from 1 BCE epoch to POSIX 1970 microseconds
3476                        jRet = cdt->toMicroSeconds () - PEGASUS_UINT64_LITERAL(62167219200000000);
3477                     }
3478                  
3479                     return jRet;
3480                  }
3481                  
3482 mark.hamzy  1.54 
3483 mark.hamzy  1.62 // -------------------------------------
3484                  // ---
3485 marek       1.78 // -        CIMInstance
3486 mark.hamzy  1.62 // ---
3487                  // -------------------------------------
3488                  
3489                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
3490                        (JNIEnv *jEnv, jobject jThs)
3491                  {
3492                     return DEBUG_ConvertCToJava (CIMInstance*, jlong, new CIMInstance ());
3493                  }
3494                  
3495                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
3496                        (JNIEnv *jEnv, jobject jThs, jstring jN)
3497                  {
3498                     const char *str = jEnv->GetStringUTFChars (jN,NULL);
3499                     CIMInstance *ci = new CIMInstance (CIMName (str));
3500                  
3501                     jEnv->ReleaseStringUTFChars (jN,str);
3502                  
3503                     return DEBUG_ConvertCToJava (CIMInstance*, jlong, ci);
3504 mark.hamzy  1.54 }
3505                  
3506 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties(
3507                      JNIEnv *jEnv,
3508                      jobject jThs,
3509                      jlong jInst,
3510                      jobjectArray jPl,
3511                      jboolean iq,
3512                      jboolean ic,
3513                      jboolean lo)
3514 mark.hamzy  1.54 {
3515 mark.hamzy  1.62    CIMInstance *ci   = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3516                     CIMInstance *cf   = 0;
3517                     CIMName      clsn = ci->getClassName ();
3518 mark.hamzy  1.54 
3519 mark.hamzy  1.62    if (lo)
3520 mark.hamzy  1.54    {
3521 mark.hamzy  1.62       cf = new CIMInstance (ci->clone ());
3522                  
3523                        CIMName clsn = ci->getClassName ();
3524                  
3525                        for (int i = cf->getPropertyCount () - 1; i >= 0; i--)
3526                        {
3527                           if (cf->getProperty (i).getClassOrigin () == clsn)
3528                              cf->removeProperty (i);
3529                        }
3530                  
3531                        return DEBUG_ConvertCToJava (CIMInstance*, jlong, cf);
3532 mark.hamzy  1.54    }
3533 mark.hamzy  1.62    else if (jPl)
3534 mark.hamzy  1.54    {
3535 mark.hamzy  1.62       CIMPropertyList pl = getList (jEnv, jPl);
3536                        Array<CIMName>  n  = pl.getPropertyNameArray ();
3537 mark.hamzy  1.54 
3538 mark.hamzy  1.62       cf = new CIMInstance (clsn);
3539 mark.hamzy  1.54 
3540 mark.hamzy  1.62       for (int i = 0, s = n.size (); i < s; i++)
3541 mark.hamzy  1.54       {
3542 mark.hamzy  1.62          Uint32 pos = ci->findProperty (n[i]);
3543 mark.hamzy  1.54 
3544 mark.hamzy  1.62          if (pos != PEG_NOT_FOUND)
3545 mark.hamzy  1.54          {
3546 mark.hamzy  1.62             if (iq)
3547 mark.hamzy  1.54             {
3548 mark.hamzy  1.62                CIMProperty cp = ci->getProperty (pos).clone ();
3549                  
3550                                 if (!ic)
3551                                    cp.setClassOrigin (CIMName ());
3552                  
3553                                 cf->addProperty (cp);
3554 mark.hamzy  1.54             }
3555                              else
3556                              {
3557 mark.hamzy  1.62                CIMProperty cp = ci->getProperty (pos);
3558                                 CIMName     co;
3559                  
3560                                 if (ic)
3561                                    co = cp.getClassOrigin ();
3562                  
3563                                 CIMProperty np (cp.getName (),
3564                                                 cp.getValue (),
3565                                                 cp.getArraySize (),
3566                                                 cp.getReferenceClassName (),
3567                                                 co,
3568                                                 cp.getPropagated ());
3569                  
3570                                 cf->addProperty (np);
3571 mark.hamzy  1.54             }
3572                           }
3573                        }
3574 mark.hamzy  1.62 
3575                        cf->setPath (ci->getPath ());
3576 mark.hamzy  1.54    }
3577 mark.hamzy  1.62    else if (iq)
3578                     {
3579                        cf = new CIMInstance (ci->clone ());
3580                  
3581                        if (ic)
3582                           return DEBUG_ConvertCToJava (CIMInstance*, jlong, cf);
3583 mark.hamzy  1.20 
3584 mark.hamzy  1.62       for (int i = cf->getPropertyCount () - 1; i >= 0; i--)
3585                        {
3586                           CIMProperty cp = cf->getProperty (i);
3587 schuur      1.1  
3588 mark.hamzy  1.62          cp.setClassOrigin (CIMName ());
3589                           cf->removeProperty (i);
3590                           cf->addProperty (cp);
3591                        }
3592                     }
3593                     else
3594                     {
3595                        cf = new CIMInstance (clsn);
3596 mark.hamzy  1.20 
3597 mark.hamzy  1.62       for (int i = ci->getPropertyCount () - 1; i >= 0; i--)
3598                        {
3599                           CIMProperty cp = ci->getProperty (i);
3600                           CIMName     co;
3601 mark.hamzy  1.20 
3602 mark.hamzy  1.62          if (ic)
3603                              co = cp.getClassOrigin ();
3604 schuur      1.1  
3605 mark.hamzy  1.62          CIMProperty np (cp.getName (),
3606                                           cp.getValue (),
3607                                           cp.getArraySize (),
3608                                           cp.getReferenceClassName (),
3609                                           co,
3610                                           cp.getPropagated ());
3611 mark.hamzy  1.20 
3612 mark.hamzy  1.62          cf->addProperty (np);
3613                        }
3614                        cf->setPath (ci->getPath ());
3615                     }
3616 mark.hamzy  1.20 
3617 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMInstance*, jlong, cf);
3618 schuur      1.1  }
3619                  
3620 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
3621                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jN)
3622 mark.hamzy  1.20 {
3623 mark.hamzy  1.62    CIMInstance *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3624                     const char  *str = jEnv->GetStringUTFChars (jN, NULL);
3625 mark.hamzy  1.20 
3626 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
3627 mark.hamzy  1.27 
3628 mark.hamzy  1.62    /* NOT SUPPORTED AND NOT NEEDED*/
3629 schuur      1.1  }
3630                  
3631 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
3632                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jN, jlong jV)
3633 mark.hamzy  1.20 {
3634 mark.hamzy  1.62    CIMInstance *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3635                     CIMValue    *cv  = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
3636                     const char  *str = jEnv->GetStringUTFChars (jN, NULL);
3637                     Uint32       pos;
3638                  
3639                     if (  ci
3640                        && cv
3641                        )
3642                     {
3643                        try {
3644                           pos = ci->findProperty (CIMName (str));
3645 mark.hamzy  1.20 
3646 mark.hamzy  1.62          if (pos != PEG_NOT_FOUND)
3647                           {
3648                              CIMProperty cp = ci->getProperty (pos);
3649 mark.hamzy  1.20 
3650 mark.hamzy  1.62             if (cp.getType () == cv->getType ())
3651                              {
3652                                 cp.setValue (*cv);
3653                              }
3654                              else
3655                              {
3656 marek       1.78                throw CIMException(
3657                                           CIM_ERR_TYPE_MISMATCH,
3658                                           String ("Property type mismatch"));
3659 mark.hamzy  1.62             }
3660 schuur      1.1  
3661 mark.hamzy  1.62             ci->removeProperty (pos);
3662                              ci->addProperty (cp);
3663                           }
3664                           else
3665                           {
3666 pramath.r   1.77             CIMProperty *cp;
3667                  
3668                              if (cv->getType() != CIMTYPE_REFERENCE)
3669                              {
3670                                 cp = new CIMProperty (CIMName (str), *cv);
3671                              }
3672                              else
3673                              {
3674                                 if (!cv->isArray ())
3675                                 {
3676                                    CIMObjectPath cop;
3677                  
3678                                    cv->get (cop);
3679 marek       1.78                   cp = new CIMProperty(CIMName(str),*cv,0,cop.getClassName());
3680 pramath.r   1.77                }
3681                                 else
3682                                 {
3683 marek       1.78                   throwCIMException(
3684                                        jEnv,
3685                                        "+++ unsupported type in CIMProperty.property");
3686 pramath.r   1.77                }
3687                              }
3688 mark.hamzy  1.20 
3689 mark.hamzy  1.62             ci->addProperty (*cp);
3690                           }
3691                        }
3692                        Catch (jEnv);
3693                     }
3694 mark.hamzy  1.27 
3695 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
3696 schuur      1.1  }
3697                  
3698 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
3699                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jobject jV)
3700 mark.hamzy  1.20 {
3701 mark.hamzy  1.62    CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3702 mark.hamzy  1.20 
3703 mark.hamzy  1.62    if (!ci)
3704                     {
3705                        return;
3706                     }
3707 mark.hamzy  1.20 
3708 mark.hamzy  1.62    try
3709                     {
3710                        for (int i = 0, m = jEnv->CallIntMethod (jV,
3711                                                                 JMPIjvm::jv.VectorSize);
3712                             i < m;
3713                             i++)
3714                        {
3715                           JMPIjvm::checkException (jEnv);
3716 schuur      1.1  
3717 mark.hamzy  1.62          jobject jProp = jEnv->CallObjectMethod (jV,
3718                                                                   JMPIjvm::jv.VectorElementAt,
3719                                                                   i);
3720 mark.hamzy  1.20 
3721 mark.hamzy  1.62          JMPIjvm::checkException (jEnv);
3722 mark.hamzy  1.27 
3723 marek       1.78          jlong jCpRef = jEnv->CallLongMethod(
3724                                              jProp,
3725                                              JMPIjvm::jv.CIMPropertyCInst);
3726                           CIMProperty *cpNew = DEBUG_ConvertJavaToC(
3727                                                    jlong,
3728                                                    CIMProperty*,
3729                                                    jCpRef);
3730 schuur      1.1  
3731 mark.hamzy  1.62          if (cpNew)
3732                           {
3733                              Uint32 pos = ci->findProperty (cpNew->getName ());
3734 mark.hamzy  1.20 
3735 mark.hamzy  1.62             if (pos != PEG_NOT_FOUND)
3736                              {
3737                                 CIMProperty cpOld = ci->getProperty (pos);
3738 mark.hamzy  1.27 
3739 mark.hamzy  1.62                if (cpOld.getType () == cpNew->getType ())
3740                                 {
3741                                    ci->removeProperty (pos);
3742                                    ci->addProperty (*cpNew);
3743                                 }
3744                                 else
3745                                 {
3746 marek       1.78                   throw CIMException(
3747                                        CIM_ERR_TYPE_MISMATCH,
3748                                        String ("Property type mismatch"));
3749 mark.hamzy  1.62                }
3750                              }
3751                           }
3752                        }
3753                     }
3754                     Catch (jEnv);
3755 schuur      1.1  }
3756                  
3757 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
3758                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jN)
3759 mark.hamzy  1.20 {
3760 mark.hamzy  1.62    CIMInstance *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3761                     const char  *str = jEnv->GetStringUTFChars (jN, NULL);
3762                     jlong        rv  = 0;
3763 mark.hamzy  1.30 
3764 mark.hamzy  1.62    try {
3765                        Uint32 pos = ci->findProperty (CIMName (str));
3766 schuur      1.1  
3767 mark.hamzy  1.62       if (pos != PEG_NOT_FOUND)
3768                        {
3769                           CIMProperty *cp = new CIMProperty (ci->getProperty (pos));
3770 mark.hamzy  1.56 
3771 mark.hamzy  1.62          rv = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
3772 schuur      1.1        }
3773 mark.hamzy  1.62    }
3774                     Catch (jEnv);
3775 r.kieninger 1.11 
3776 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
3777 mark.hamzy  1.56 
3778 mark.hamzy  1.62    return rv;
3779 schuur      1.1  }
3780                  
3781 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
3782                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jobject jVec)
3783 mark.hamzy  1.20 {
3784 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
3785                  
3786                     CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3787 mark.hamzy  1.20 
3788 mark.hamzy  1.62    if (  ci
3789                        && CIMNamespaceName::legal (ci->getPath ().getNameSpace ().getString ())
3790                        )
3791 mark.hamzy  1.27    {
3792 mark.hamzy  1.62       CIMOMHandle      ch;
3793                        OperationContext oc;
3794                        CIMClass         cc;
3795                  
3796                        cc = ch.getClass (oc,
3797                                          ci->getPath ().getNameSpace (),
3798                                          ci->getClassName (),
3799 marek       1.78                         false,              // localOnly
3800                                          true,               // includeQualifiers
3801                                          true,               // includeClassOrigin
3802                                          CIMPropertyList ());// propertyList
3803 mark.hamzy  1.27 
3804 mark.hamzy  1.62       if (!cc.hasKeys ())
3805 mark.hamzy  1.27       {
3806 mark.hamzy  1.62          return jVec;
3807 schuur      1.1        }
3808 mark.hamzy  1.20 
3809 mark.hamzy  1.62       Array<CIMName> keyNames;
3810                  
3811                        cc.getKeyNames (keyNames);
3812                  
3813                        for (Uint32 i = 0; i < keyNames.size (); i++)
3814                        {
3815 thilo.boehm 1.79          PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
3816                                "finding key %s ",
3817                                (const char*)keyNames[i].getString().getCString()));
3818 mark.hamzy  1.20 
3819 mark.hamzy  1.62          for (Uint32 j = 0; j < ci->getPropertyCount (); j++)
3820                           {
3821                              CIMProperty cp = ci->getProperty (j);
3822 schuur      1.1  
3823 mark.hamzy  1.62             if (cp.getName () == keyNames[i])
3824                              {
3825 thilo.boehm 1.79                PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
3826 thilo.boehm 1.80                     "adding key (%d) %s ",i,
3827 thilo.boehm 1.79                     (const char*)keyNames[i].getString().getCString()));
3828 mark.hamzy  1.20 
3829 mark.hamzy  1.62                CIMProperty *cpRef  = new CIMProperty (cp);
3830 marek       1.78                jlong jCpRef = DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRef);
3831                                 jobject jProp  = jEnv->NewObject(
3832                                                           JMPIjvm::jv.CIMPropertyClassRef,
3833                                                           JMPIjvm::jv.CIMPropertyNewJ,
3834                                                           jCpRef);
3835 mark.hamzy  1.27 
3836 mark.hamzy  1.62                jEnv->CallVoidMethod (jVec,
3837                                                       JMPIjvm::jv.VectorAddElement,
3838                                                       jProp);
3839                              }
3840                           }
3841                        }
3842                     }
3843 mark.hamzy  1.20 
3844 mark.hamzy  1.62    return jVec;
3845 schuur      1.1  }
3846                  
3847 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
3848                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jobject jVec)
3849 mark.hamzy  1.20 {
3850 mark.hamzy  1.44    JMPIjvm::cacheIDs (jEnv);
3851 mark.hamzy  1.30 
3852 mark.hamzy  1.62    CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3853 mark.hamzy  1.20 
3854 mark.hamzy  1.62    for (int i = 0, s = ci->getPropertyCount (); i < s; i++)
3855 mark.hamzy  1.44    {
3856 mark.hamzy  1.62       CIMProperty *cp  = new CIMProperty (ci->getProperty (i));
3857                        jlong        jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
3858                  
3859 marek       1.78       jobject prop = jEnv->NewObject(
3860                                           JMPIjvm::jv.CIMPropertyClassRef,
3861                                           JMPIjvm::jv.CIMPropertyNewJ,
3862                                           jCp);
3863 mark.hamzy  1.20 
3864 marek       1.78       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
3865 schuur      1.1     }
3866 mark.hamzy  1.56 
3867 mark.hamzy  1.62    return jVec;
3868 schuur      1.1  }
3869                  
3870 marek       1.78 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName(
3871                      JNIEnv *jEnv,
3872                      jobject jThs,
3873                      jlong jInst)
3874 mark.hamzy  1.20 {
3875 mark.hamzy  1.62    CIMInstance  *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3876                     const String &cn = ci->getClassName ().getString ();
3877                  
3878                     jstring str = jEnv->NewStringUTF (cn.getCString ());
3879 mark.hamzy  1.20 
3880 mark.hamzy  1.62    return str;
3881 schuur      1.1  }
3882                  
3883 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
3884                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jN)
3885 mark.hamzy  1.20 {
3886 mark.hamzy  1.62    CIMInstance *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3887                     const char  *str = jEnv->GetStringUTFChars (jN, NULL);
3888                     jlong        rv  = 0;
3889                     Uint32       pos;
3890 mark.hamzy  1.20 
3891 mark.hamzy  1.62    if (ci)
3892                     {
3893                        try
3894                        {
3895                           CIMOMHandle      ch;
3896                           OperationContext oc;
3897                           CIMClass         cc;
3898 mark.hamzy  1.20 
3899 mark.hamzy  1.62          cc = ch.getClass (oc,
3900                                             ci->getPath ().getNameSpace (),
3901                                             ci->getClassName (),
3902 marek       1.78                            false,               // localOnly
3903                                             true,                // includeQualifiers
3904                                             true,                // includeClassOrigin
3905                                             CIMPropertyList ()); // propertyList
3906 schuur      1.1  
3907 mark.hamzy  1.62          pos = cc.findQualifier (String (str));
3908 schuur      1.1  
3909 mark.hamzy  1.62          if (pos != PEG_NOT_FOUND)
3910                           {
3911                              CIMQualifier *cq = 0;
3912 schuur      1.1  
3913 mark.hamzy  1.62             cq = new CIMQualifier (cc.getQualifier (pos));
3914 schuur      1.1  
3915 mark.hamzy  1.62             rv = DEBUG_ConvertCToJava (CIMQualifier*, jlong, cq);
3916                           }
3917                        }
3918                        Catch (jEnv);
3919                     }
3920 mark.hamzy  1.20 
3921 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
3922 mark.hamzy  1.20 
3923 mark.hamzy  1.62    return rv;
3924 schuur      1.1  }
3925                  
3926 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
3927                        (JNIEnv *jEnv, jobject jThs, jlong jInst)
3928 mark.hamzy  1.20 {
3929 mark.hamzy  1.62    CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3930                     CIMInstance *cl = new CIMInstance (ci->clone ());
3931 mark.hamzy  1.20 
3932 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMInstance*, jlong, cl);
3933 schuur      1.1  }
3934                  
3935 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
3936                        (JNIEnv *jEnv, jobject jThs, jlong jInst)
3937 mark.hamzy  1.20 {
3938 mark.hamzy  1.62    CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
3939 mark.hamzy  1.20 
3940 mark.hamzy  1.62    delete ci;
3941 schuur      1.1  
3942 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jInst);
3943 schuur      1.1  }
3944                  
3945 mark.hamzy  1.62 /*
3946                   * Class:     org_pegasus_jmpi_CIMInstance
3947                   * Method:    _getObjectPath
3948                   * Signature: (I)I
3949                   */
3950                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getObjectPath
3951                    (JNIEnv *jEnv, jobject jThs, jlong jciCi)
3952 mark.hamzy  1.20 {
3953 mark.hamzy  1.62    CIMInstance   *ci     = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);
3954                     CIMObjectPath *copRet = NULL;
3955                  
3956                     try
3957                     {
3958                        if (ci)
3959                        {
3960                           const CIMObjectPath& cop = ci->getPath ();
3961                  
3962                           copRet = new CIMObjectPath (cop);
3963                        }
3964                     }
3965                     Catch (jEnv);
3966 mark.hamzy  1.20 
3967 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, copRet);
3968 schuur      1.1  }
3969                  
3970 mark.hamzy  1.62 /*
3971                   * Class:     org_pegasus_jmpi_CIMInstance
3972                   * Method:    _setObjectPath
3973                   * Signature: (II)V
3974                   */
3975                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setObjectPath
3976                    (JNIEnv *jEnv, jobject jThs, jlong jciCi, jlong jciCop)
3977 mark.hamzy  1.20 {
3978 mark.hamzy  1.62    CIMInstance   *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);
3979                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jciCop);
3980 mark.hamzy  1.20 
3981 mark.hamzy  1.62    try
3982                     {
3983                        if (  ci
3984                           && cop
3985                           )
3986                        {
3987                           ci->setPath (*cop);
3988                        }
3989                     }
3990                     Catch (jEnv);
3991 schuur      1.1  }
3992                  
3993 mark.hamzy  1.62 /*
3994                   * Class:     org_pegasus_jmpi_CIMInstance
3995                   * Method:    _getPropertyCount
3996                   * Signature: (I)I
3997                   */
3998                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyCount
3999                    (JNIEnv *jEnv, jobject jThs, jlong jciCi)
4000 mark.hamzy  1.20 {
4001 mark.hamzy  1.62    CIMInstance *ci      = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);
4002                     Uint32       ui32Ret = 0;
4003 mark.hamzy  1.20 
4004 mark.hamzy  1.62    try
4005 mark.hamzy  1.35    {
4006 mark.hamzy  1.62       if (ci)
4007                        {
4008                           ui32Ret = ci->getPropertyCount ();
4009                        }
4010                     }
4011                     Catch (jEnv);
4012 mark.hamzy  1.35 
4013 mark.hamzy  1.62    return ui32Ret;
4014                  }
4015 mark.hamzy  1.35 
4016 mark.hamzy  1.62 /*
4017                   * Class:     org_pegasus_jmpi_CIMInstance
4018                   * Method:    _getProperty
4019                   * Signature: (II)I
4020                   */
4021                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMInstance__1getPropertyI
4022                    (JNIEnv *jEnv, jobject jThs, jlong jciCi, jint ji)
4023                  {
4024                     CIMInstance *ci    = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jciCi);
4025                     CIMProperty *cpRet = NULL;
4026 mark.hamzy  1.35 
4027 mark.hamzy  1.62    try
4028 mark.hamzy  1.35    {
4029 mark.hamzy  1.62       if (ci)
4030                        {
4031                           CIMProperty  cp;
4032                  
4033                           cp = ci->getProperty (ji);
4034 mark.hamzy  1.35 
4035 mark.hamzy  1.62          cpRet = new CIMProperty (cp);
4036                        }
4037 schuur      1.6     }
4038 mark.hamzy  1.62    Catch (jEnv);
4039                  
4040                     return DEBUG_ConvertCToJava (CIMProperty*, jlong, cpRet);
4041                  }
4042                  
4043                  
4044                  // -------------------------------------
4045                  // ---
4046 marek       1.78 // -        CIMMethod
4047 mark.hamzy  1.62 // ---
4048                  // -------------------------------------
4049                  
4050                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
4051                        (JNIEnv *jEnv, jobject jThs, jlong jM)
4052                  {
4053                     CIMMethod *cm       = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4054                     bool       fSuccess = false;
4055                     jint       jType    = 0;
4056                  
4057                     if (cm)
4058 mark.hamzy  1.35    {
4059 mark.hamzy  1.62       CIMType ct = cm->getType ();
4060 mark.hamzy  1.35 
4061 mark.hamzy  1.62       jType = _dataType::convertCTypeToJavaType (ct, &fSuccess);
4062 schuur      1.1     }
4063 mark.hamzy  1.20 
4064 mark.hamzy  1.62    return jType;
4065 schuur      1.1  }
4066                  
4067 mark.hamzy  1.67 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMMethod__1getName
4068                        (JNIEnv *jEnv, jobject jThs, jlong jM)
4069                  {
4070                     CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4071                     jstring    str = 0;
4072                  
4073                     if (cm)
4074                     {
4075                        CIMName cn = cm->getName ();
4076                  
4077                        str = jEnv->NewStringUTF (cn.getString ().getCString ());
4078                     }
4079                  
4080                     return str;
4081                  }
4082                  
4083                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1findParameter
4084                        (JNIEnv *jEnv, jobject jThs, jlong jM, jstring jName)
4085                  {
4086                     CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4087                     jint       rv  = -1;
4088 mark.hamzy  1.67 
4089                     if (cm && jName)
4090                     {
4091                        const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
4092                  
4093                        try
4094                        {
4095                           CIMName name (cstrName);
4096                  
4097                           rv = cm->findParameter (name);
4098                        }
4099                        Catch (jEnv);
4100                  
4101                        jEnv->ReleaseStringUTFChars (jName, cstrName);
4102                     }
4103                  
4104                     return rv;
4105                  }
4106                  
4107                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMMethod__1getParameter
4108                        (JNIEnv *jEnv, jobject jThs, jlong jM, jint jParameter)
4109 mark.hamzy  1.67 {
4110                     CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4111                     jlong      rv  = 0;
4112                  
4113                     if (cm && jParameter >= 0)
4114                     {
4115                        try
4116                        {
4117                           CIMParameter cp = cm->getParameter (jParameter);
4118                  
4119 marek       1.78          rv = DEBUG_ConvertCToJava(CIMParameter *, jlong, new CIMParameter(cp));
4120 mark.hamzy  1.67       }
4121                        Catch (jEnv);
4122                     }
4123                  
4124                     return rv;
4125                  }
4126                  
4127 dave.sudlik 1.75 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getParameterCount
4128 mark.hamzy  1.67       (JNIEnv *jEnv, jobject jThs, jlong jM)
4129                  {
4130                     CIMMethod *cm  = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4131                     jint       rv  = 0;
4132                  
4133                     if (cm)
4134                     {
4135                        try
4136                        {
4137                           rv = cm->getParameterCount ();
4138                        }
4139                        Catch (jEnv);
4140                     }
4141                  
4142                     return rv;
4143                  }
4144                  
4145 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
4146                        (JNIEnv *jEnv, jobject jThs, jlong jM)
4147 mark.hamzy  1.24 {
4148 mark.hamzy  1.62    CIMMethod *cm = DEBUG_ConvertJavaToC (jlong, CIMMethod*, jM);
4149 mark.hamzy  1.24 
4150 mark.hamzy  1.62    delete cm;
4151 mark.hamzy  1.24 
4152 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jM);
4153 mark.hamzy  1.24 }
4154                  
4155 schuur      1.1  
4156                  // -------------------------------------
4157                  // ---
4158 marek       1.78 // -        CIMNameSpace
4159 schuur      1.6  // ---
4160                  // -------------------------------------
4161                  
4162 mark.hamzy  1.62 _nameSpace::_nameSpace ()
4163 mark.hamzy  1.20 {
4164 mark.hamzy  1.62    port_ = 0;
4165                     hostName_ = System::getHostName ();
4166                     nameSpace_ = "root/cimv2";
4167 mark.hamzy  1.66    fHttps = false;
4168 mark.hamzy  1.62 }
4169 mark.hamzy  1.20 
4170 mark.hamzy  1.62 _nameSpace::_nameSpace (String hn)
4171                  {
4172                     port_ = 0;
4173                     hostName_ = hn;
4174                     nameSpace_ = "root/cimv2";
4175 mark.hamzy  1.66    fHttps = false;
4176 schuur      1.6  }
4177                  
4178 mark.hamzy  1.62 _nameSpace::_nameSpace (String hn, String ns)
4179 mark.hamzy  1.20 {
4180 mark.hamzy  1.62     port_ = 0;
4181                      hostName_ = hn;
4182                      nameSpace_ = ns;
4183 mark.hamzy  1.66     fHttps = false;
4184 schuur      1.6  }
4185                  
4186 mark.hamzy  1.62 int _nameSpace::port ()
4187 mark.hamzy  1.20 {
4188 mark.hamzy  1.62    if (port_)
4189                        return port_;
4190 mark.hamzy  1.20 
4191 mark.hamzy  1.62    port_ = 5988;
4192 mark.hamzy  1.20 
4193 mark.hamzy  1.62    if (hostName_.subString (0,7) == "http://")
4194                     {
4195 mark.hamzy  1.66       protocol_ = hostName_.subString (0,7);
4196 mark.hamzy  1.62       hostName_ = hostName_.subString (7);
4197                     }
4198 mark.hamzy  1.66    else if (hostName_.subString (0,8) == "https://")
4199                     {
4200                        protocol_ = hostName_.subString (0,8);
4201                        hostName_ = hostName_.subString (8);
4202                        fHttps = true;
4203                     }
4204 schuur      1.6  
4205 mark.hamzy  1.62    Sint32 p = hostName_.reverseFind (':');
4206 mark.hamzy  1.20 
4207 mark.hamzy  1.62    if (p >= 0)
4208 mark.hamzy  1.49    {
4209 mark.hamzy  1.62       if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9'))
4210                           port_ = atoi (hostName_.subString (p+1).getCString ());
4211                  
4212                        hostName_.remove (p);
4213 mark.hamzy  1.49    }
4214                  
4215 mark.hamzy  1.62    return port_;
4216                  }
4217 mark.hamzy  1.20 
4218 mark.hamzy  1.62 String _nameSpace::hostName ()
4219                  {
4220                     port ();
4221                     return hostName_;
4222 schuur      1.6  }
4223                  
4224 mark.hamzy  1.62 String _nameSpace::nameSpace ()
4225 mark.hamzy  1.20 {
4226 mark.hamzy  1.62    return nameSpace_;
4227                  }
4228 mark.hamzy  1.20 
4229 mark.hamzy  1.66 Boolean _nameSpace::isHttps ()
4230                  {
4231                     port ();
4232                     return fHttps;
4233                  }
4234                  
4235 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
4236                    (JNIEnv *jEnv, jobject jThs)
4237                  {
4238                    return DEBUG_ConvertCToJava (_nameSpace*, jlong, new _nameSpace ());
4239 schuur      1.6  }
4240                  
4241 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
4242                    (JNIEnv *jEnv, jobject jThs, jstring jHn)
4243 mark.hamzy  1.20 {
4244 mark.hamzy  1.62    const char *hn    = jEnv->GetStringUTFChars (jHn, NULL);
4245 marek       1.78    jlong cInst = DEBUG_ConvertCToJava(_nameSpace*, jlong, new _nameSpace(hn));
4246 mark.hamzy  1.62 
4247                     jEnv->ReleaseStringUTFChars (jHn, hn);
4248 mark.hamzy  1.20 
4249 mark.hamzy  1.62    return cInst;
4250 schuur      1.6  }
4251                  
4252 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
4253                    (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs)
4254 mark.hamzy  1.20 {
4255 mark.hamzy  1.62    const char *hn    = jEnv->GetStringUTFChars (jHn, NULL);
4256                     const char *ns    = jEnv->GetStringUTFChars (jNs, NULL);
4257 marek       1.78    jlong cInst = DEBUG_ConvertCToJava(
4258                                       _nameSpace*,
4259                                       jlong,
4260                                       new _nameSpace(String (hn),String (ns)));
4261 mark.hamzy  1.20 
4262 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jHn, hn);
4263                     jEnv->ReleaseStringUTFChars (jNs, ns);
4264 mark.hamzy  1.27 
4265 mark.hamzy  1.62    return cInst;
4266 schuur      1.6  }
4267                  
4268 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
4269                    (JNIEnv *jEnv, jobject jThs, jlong jNs)
4270 mark.hamzy  1.20 {
4271 mark.hamzy  1.62    _nameSpace   *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
4272                     const String &ns  = cNs->nameSpace_;
4273                     jstring       str = jEnv->NewStringUTF (ns.getCString ());
4274 mark.hamzy  1.35 
4275 mark.hamzy  1.62    return str;
4276                  }
4277                  
4278                  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
4279                    (JNIEnv *jEnv, jobject jThs, jlong jNs)
4280                  {
4281                     _nameSpace   *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
4282                     const String &hn  = cNs->hostName_;
4283                     jstring       str = jEnv->NewStringUTF (hn.getCString ());
4284                  
4285                     return str;
4286                  }
4287                  
4288                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
4289                    (JNIEnv *jEnv, jobject jThs, jlong jNs, jstring jN)
4290                  {
4291                     _nameSpace *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
4292                     const char *str = jEnv->GetStringUTFChars (jN, NULL);
4293                  
4294                     cNs->nameSpace_ = str;
4295                  
4296 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
4297                  }
4298                  
4299                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
4300                    (JNIEnv *jEnv, jobject jThs, jlong jNs, jstring jHn)
4301                  {
4302                     _nameSpace *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
4303                     const char *str = jEnv->GetStringUTFChars (jHn, NULL);
4304                  
4305                     cNs->port_ = 0;
4306                     cNs->hostName_ = str;
4307                  
4308                     jEnv->ReleaseStringUTFChars (jHn, str);
4309                  }
4310                  
4311                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1finalize
4312                     (JNIEnv *jEnv, jobject jThs, jlong jNs)
4313                  {
4314                     _nameSpace *cNs = DEBUG_ConvertJavaToC (jlong, _nameSpace*, jNs);
4315 mark.hamzy  1.35 
4316 mark.hamzy  1.62    delete cNs;
4317 mark.hamzy  1.20 
4318 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jNs);
4319 schuur      1.6  }
4320                  
4321 mark.hamzy  1.51 
4322 schuur      1.6  // -------------------------------------
4323                  // ---
4324 marek       1.78 // -        CIMObject
4325 schuur      1.1  // ---
4326                  // -------------------------------------
4327                  
4328 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObject__1newClass
4329                    (JNIEnv *jEnv, jobject jThs, jlong jCc)
4330 mark.hamzy  1.20 {
4331 mark.hamzy  1.62    CIMClass *cCc = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCc);
4332 mark.hamzy  1.20 
4333 mark.hamzy  1.62    try {
4334                        CIMObject *cCo = new CIMObject (*cCc);
4335 schuur      1.1  
4336 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMObject*, jlong, cCo);
4337                     }
4338                     Catch (jEnv);
4339 mark.hamzy  1.20 
4340 mark.hamzy  1.62    return 0;
4341 schuur      1.5  }
4342                  
4343 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObject__1newInstance
4344                    (JNIEnv *jEnv, jobject jThs, jlong jCi)
4345 mark.hamzy  1.20 {
4346 mark.hamzy  1.62    CIMInstance *cCi = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi);
4347 mark.hamzy  1.27 
4348 schuur      1.1     try {
4349 mark.hamzy  1.62       CIMObject *cCo = new CIMObject (*cCi);
4350 mark.hamzy  1.27 
4351 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMObject*, jlong, cCo);
4352 schuur      1.1     }
4353 mark.hamzy  1.44    Catch (jEnv);
4354 mark.hamzy  1.20 
4355 mark.hamzy  1.62    return 0;
4356                  }
4357                  
4358                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObject__1finalize
4359                    (JNIEnv *jEnv, jobject jThs, jlong jInst)
4360                  {
4361                     CIMObject *co = DEBUG_ConvertJavaToC (jlong, CIMObject*, jInst);
4362                  
4363                     delete co;
4364 mark.hamzy  1.27 
4365 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jInst);
4366 schuur      1.1  }
4367                  
4368 mark.hamzy  1.62 
4369                  // -------------------------------------
4370                  // ---
4371 marek       1.78 // -        CIMObjectPath
4372 mark.hamzy  1.62 // ---
4373                  // -------------------------------------
4374                  
4375                  CIMObjectPath* construct ()
4376 mark.hamzy  1.20 {
4377 mark.hamzy  1.62    CIMObjectPath *cop = new CIMObjectPath ();
4378                     _nameSpace     n;
4379                  
4380                     cop->setNameSpace (n.nameSpace ());
4381                     cop->setHost (n.hostName ());
4382                  
4383                     return cop;
4384                  }
4385 mark.hamzy  1.20 
4386 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
4387                        (JNIEnv *jEnv, jobject jThs)
4388                  {
4389                     return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, construct ());
4390 schuur      1.1  }
4391                  
4392 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
4393                        (JNIEnv *jEnv, jobject jThs, jstring jCn)
4394 mark.hamzy  1.20 {
4395 mark.hamzy  1.62    CIMObjectPath *cop = construct ();
4396                     const char    *str = jEnv->GetStringUTFChars (jCn, NULL);
4397                  
4398                     if (str)
4399                        cop->setClassName (str);
4400                  
4401                     jEnv->ReleaseStringUTFChars (jCn, str);
4402 mark.hamzy  1.20 
4403 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop);
4404 schuur      1.1  }
4405                  
4406 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
4407                        (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs)
4408 mark.hamzy  1.20 {
4409 mark.hamzy  1.62    CIMObjectPath *cop  = construct ();
4410                     const char    *str1 = NULL;
4411                     const char    *str2 = NULL;
4412                  
4413                     try {
4414                        if (jCn)
4415                           str1 = jEnv->GetStringUTFChars (jCn, NULL);
4416                        if (jNs)
4417                           str2 = jEnv->GetStringUTFChars (jNs, NULL);
4418                        if (str1)
4419                           cop->setClassName (str1);
4420                        if (str2)
4421                           cop->setNameSpace (str2);
4422                     }
4423                     Catch (jEnv);
4424                  
4425                     if (str1)
4426                        jEnv->ReleaseStringUTFChars (jCn, str1);
4427                     if (str2)
4428                        jEnv->ReleaseStringUTFChars (jNs, str2);
4429 mark.hamzy  1.20 
4430 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop);
4431                  }
4432 mark.hamzy  1.20 
4433 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCi
4434                        (JNIEnv *jEnv, jobject jThs, jlong jInst)
4435                  {
4436                     CIMInstance   *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
4437                     CIMObjectPath *cop = 0;
4438                     _nameSpace     n;
4439 mark.hamzy  1.20 
4440 mark.hamzy  1.62    try
4441 mark.hamzy  1.56    {
4442 mark.hamzy  1.62       if (ci)
4443                        {
4444                           cop = new CIMObjectPath (ci->getPath ());
4445                  
4446                           if (cop)
4447                           {
4448                              if (cop->getNameSpace ().isNull ())
4449                                 cop->setNameSpace (n.nameSpace ());
4450                  
4451                              if (cop->getHost ().size () == 0)
4452                                 cop->setHost (n.hostName ());
4453                           }
4454                        }
4455                     }
4456                     Catch (jEnv);
4457                  
4458                     return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop);
4459                  }
4460                  
4461                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCiNs
4462                        (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jNamespace)
4463 mark.hamzy  1.62 {
4464 marek       1.78    CIMInstance      *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInst);
4465                     CIMObjectPath    *cop = 0;
4466                     const char       *pszNamespace = jEnv->GetStringUTFChars (jNamespace, NULL);
4467 mark.hamzy  1.62    CIMNamespaceName  cnnNamespace;
4468                     bool              fNamespaceValid = false;
4469                     _nameSpace        n;
4470                  
4471                     try
4472 mark.hamzy  1.56    {
4473 mark.hamzy  1.62       cnnNamespace    = pszNamespace;
4474                        fNamespaceValid = true;
4475 mark.hamzy  1.56    }
4476 mark.hamzy  1.62    catch (Exception e)
4477 mark.hamzy  1.56    {
4478                     }
4479 mark.hamzy  1.62 
4480                     jEnv->ReleaseStringUTFChars (jNamespace, pszNamespace);
4481                  
4482                     try
4483 mark.hamzy  1.56    {
4484 mark.hamzy  1.62       if (ci)
4485                        {
4486                           cop = new CIMObjectPath (ci->getPath ());
4487                  
4488                           if (cop)
4489                           {
4490                              if (fNamespaceValid)
4491                              {
4492                                 cop->setNameSpace (cnnNamespace);
4493                              }
4494                              else
4495                              {
4496                                 if (cop->getNameSpace ().isNull ())
4497                                    cop->setNameSpace (n.nameSpace ());
4498                              }
4499                  
4500                              if (cop->getHost ().size () == 0)
4501                                 cop->setHost (n.hostName ());
4502                           }
4503                        }
4504 mark.hamzy  1.56    }
4505 mark.hamzy  1.62    Catch (jEnv);
4506 mark.hamzy  1.56 
4507 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop);
4508 schuur      1.1  }
4509                  
4510 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
4511                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4512 mark.hamzy  1.20 {
4513 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4514                  
4515                     delete cop;
4516 mark.hamzy  1.20 
4517 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jCop);
4518 schuur      1.5  }
4519                  
4520 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
4521                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4522 mark.hamzy  1.20 {
4523 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4524                     const String  &ns  = cop->getNameSpace ().getString ();
4525                  
4526                     jstring str = jEnv->NewStringUTF (ns.getCString ());
4527 mark.hamzy  1.20 
4528 schuur      1.1     return str;
4529                  }
4530                  
4531 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
4532                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jstring jName)
4533                  {
4534                     CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4535                     const char    *str = jEnv->GetStringUTFChars (jName,NULL);
4536                  
4537                     cop->setNameSpace (CIMNamespaceName (str));
4538                  
4539                     jEnv->ReleaseStringUTFChars (jName,str);
4540                  }
4541                  
4542                  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
4543                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4544 mark.hamzy  1.20 {
4545 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4546                     const String  &hn = cop->getHost ();
4547 mark.hamzy  1.20 
4548 mark.hamzy  1.62    jstring str = jEnv->NewStringUTF (hn.getCString ());
4549 mark.hamzy  1.27 
4550 mark.hamzy  1.62    return str;
4551 schuur      1.5  }
4552                  
4553 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
4554                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jstring jName)
4555 mark.hamzy  1.20 {
4556 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4557                     const char    *str = jEnv->GetStringUTFChars (jName,NULL);
4558                  
4559                     cop->setHost (String (str));
4560 mark.hamzy  1.20 
4561 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jName,str);
4562 schuur      1.1  }
4563                  
4564 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
4565                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4566 mark.hamzy  1.20 {
4567 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4568                     const String  &cn  = cop->getClassName ().getString ();
4569 mark.hamzy  1.20 
4570 mark.hamzy  1.62    jstring str = jEnv->NewStringUTF (cn.getCString ());
4571 mark.hamzy  1.20 
4572 schuur      1.1     return str;
4573                  }
4574                  
4575 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
4576                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jstring jName)
4577 mark.hamzy  1.20 {
4578 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4579                     const char    *str = jEnv->GetStringUTFChars (jName,NULL);
4580 mark.hamzy  1.35 
4581 mark.hamzy  1.62    cop->setClassName (String (str));
4582 mark.hamzy  1.35 
4583 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jName,str);
4584 schuur      1.1  }
4585                  
4586 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
4587                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jobject jVec)
4588 mark.hamzy  1.20 {
4589 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
4590 mark.hamzy  1.20 
4591 marek       1.78    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4592 mark.hamzy  1.62    const Array<CIMKeyBinding> &akb = cop->getKeyBindings ();
4593 mark.hamzy  1.20 
4594 mark.hamzy  1.62    for (Uint32 i = 0, s = akb.size (); i < s; i++)
4595 mark.hamzy  1.35    {
4596 mark.hamzy  1.62       const String        &n  = akb[i].getName ().getString ();
4597                        const String        &v  = akb[i].getValue ();
4598                        CIMKeyBinding::Type  t  = akb[i].getType ();
4599                        CIMValue            *cv = 0;
4600                  
4601                        switch (t)
4602                        {
4603                        case CIMKeyBinding::NUMERIC:
4604                           cv = new CIMValue ((Sint32)atol (v.getCString ()));
4605                           break;
4606                        case CIMKeyBinding::STRING:
4607                           cv = new CIMValue (v);
4608                           break;
4609                        case CIMKeyBinding::BOOLEAN:
4610                           cv = new CIMValue ((Boolean) (v.getCString ()));
4611                           break;
4612                        case CIMKeyBinding::REFERENCE:
4613                           cv = new CIMValue (CIMObjectPath (akb[i].getValue ()));
4614                           break;
4615                        default:
4616                           throwCIMException (jEnv,"+++ unsupported type: ");
4617 mark.hamzy  1.62       }
4618 mark.hamzy  1.20 
4619 mark.hamzy  1.62       CIMProperty *cp = 0;
4620 mark.hamzy  1.35 
4621 mark.hamzy  1.62       if (t != CIMKeyBinding::REFERENCE)
4622                           cp = new CIMProperty (n, *cv);
4623                        else
4624 marek       1.78          cp = new CIMProperty(
4625                                        n,
4626                                        *cv,
4627 kumpf       1.87                       0,
4628 marek       1.78                       ((CIMObjectPath) akb[i].getValue()).getClassName());
4629 mark.hamzy  1.20 
4630 mark.hamzy  1.62       jlong   jCp  = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
4631 marek       1.78       jobject prop = jEnv->NewObject(
4632                                           JMPIjvm::jv.CIMPropertyClassRef,
4633                                           JMPIjvm::jv.CIMPropertyNewJ,
4634                                           jCp);
4635 mark.hamzy  1.41 
4636 mark.hamzy  1.62       jEnv->CallVoidMethod (jVec,JMPIjvm::jv.VectorAddElement,prop);
4637 mark.hamzy  1.35    }
4638 mark.hamzy  1.62 
4639                     return jVec;
4640 schuur      1.5  }
4641                  
4642 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
4643                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jobject jVec)
4644 mark.hamzy  1.20 {
4645 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
4646 mark.hamzy  1.20 
4647 marek       1.78    CIMObjectPath *cop = DEBUG_ConvertJavaToC(jlong, CIMObjectPath*, jCop);
4648 mark.hamzy  1.62    Array<CIMKeyBinding>  akb;
4649 schuur      1.1  
4650 marek       1.78    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize);i<s;i++)
4651 mark.hamzy  1.62    {
4652 marek       1.78       jobject o = jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
4653 mark.hamzy  1.62       jlong        jCp = jEnv->CallLongMethod (o,JMPIjvm::jv.CIMPropertyCInst);
4654                        CIMProperty *cp  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jCp);
4655 mark.hamzy  1.20 
4656 mark.hamzy  1.62       akb.append (CIMKeyBinding (cp->getName (), cp->getValue ()));
4657                     }
4658 mark.hamzy  1.20 
4659 mark.hamzy  1.62    cop->setKeyBindings (akb);
4660 schuur      1.1  }
4661 schuur      1.5  
4662 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
4663                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jstring jId, jlong jVal)
4664 mark.hamzy  1.39 {
4665 marek       1.78    CIMObjectPath *cop = DEBUG_ConvertJavaToC(jlong, CIMObjectPath*, jCop);
4666                     const char *str = jEnv->GetStringUTFChars (jId, NULL);
4667                     CIMValue *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jVal);
4668 mark.hamzy  1.62    Array<CIMKeyBinding> keyBindings = cop->getKeyBindings ();
4669 mark.hamzy  1.39 
4670 mark.hamzy  1.62    keyBindings.append (CIMKeyBinding (str,*cv));
4671                     cop->setKeyBindings (Array<CIMKeyBinding> (keyBindings));
4672 mark.hamzy  1.39 
4673 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jId, str);
4674 mark.hamzy  1.39 }
4675                  
4676 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
4677                        (JNIEnv *jEnv, jobject jThs, jlong jCop, jstring jStr)
4678 mark.hamzy  1.39 {
4679 marek       1.78    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4680                     const Array<CIMKeyBinding> &akb = cop->getKeyBindings ();
4681                     const char *strKeyName = jEnv->GetStringUTFChars (jStr,NULL);
4682 mark.hamzy  1.62    jstring                     retStr     = NULL;
4683 mark.hamzy  1.39 
4684 mark.hamzy  1.62    for (Uint32 i = 0,s = akb.size (); i<s; i++)
4685 mark.hamzy  1.39    {
4686 mark.hamzy  1.62       const String &n = akb[i].getName ().getString ();
4687                  
4688                        if (n == String (strKeyName))
4689                        {
4690                           retStr = jEnv->NewStringUTF (akb[i].getValue ().getCString ());
4691                           break;
4692                        }
4693 mark.hamzy  1.39    }
4694                  
4695 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jStr,strKeyName);
4696 mark.hamzy  1.39 
4697 mark.hamzy  1.62    return retStr;
4698 schuur      1.5  }
4699                  
4700 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
4701                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4702 mark.hamzy  1.20 {
4703 mark.hamzy  1.62    CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4704                     const String  &ns  = cop->toString ();
4705 mark.hamzy  1.20 
4706 mark.hamzy  1.62    jstring str = jEnv->NewStringUTF (ns.getCString ());
4707 mark.hamzy  1.20 
4708 mark.hamzy  1.62    return str;
4709 schuur      1.5  }
4710                  
4711 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
4712                        (JNIEnv *jEnv, jobject jThs, jlong jCop)
4713 mark.hamzy  1.20 {
4714 mark.hamzy  1.62    CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4715 marek       1.78    CIMObjectPath *copl = new CIMObjectPath(
4716                                                   cop->getHost(),
4717                                                   cop->getNameSpace(),
4718                                                   cop->getClassName(),
4719                                                   cop->getKeyBindings());
4720 mark.hamzy  1.20 
4721 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, copl);
4722 schuur      1.5  }
4723                  
4724 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
4725                        (JNIEnv *jEnv, jobject jThs, jstring jStr)
4726 mark.hamzy  1.20 {
4727 mark.hamzy  1.62    const char    *strCop = jEnv->GetStringUTFChars (jStr,NULL);
4728                     CIMObjectPath *cop    = new CIMObjectPath ();
4729 mark.hamzy  1.20 
4730 mark.hamzy  1.62    cop->set (String (strCop));
4731 mark.hamzy  1.24 
4732 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jStr,strCop);
4733 mark.hamzy  1.24 
4734 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, cop);
4735 schuur      1.5  }
4736                  
4737                  
4738 schuur      1.1  // -------------------------------------
4739                  // ---
4740 marek       1.78 // -        CIMOMHandle
4741 schuur      1.1  // ---
4742                  // -------------------------------------
4743                  
4744 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
4745                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean lo,
4746                           jboolean iq, jboolean ic, jobjectArray jPl)
4747 mark.hamzy  1.20 {
4748 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4749                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4750                     CIMPropertyList   pl;
4751                     OperationContext  ctx;
4752 mark.hamzy  1.20 
4753 mark.hamzy  1.62    if (jPl)
4754                        pl = getList (jEnv, jPl);
4755                     else
4756                        pl = CIMPropertyList ();
4757 mark.hamzy  1.20 
4758 mark.hamzy  1.62    try {
4759                        CIMClass cls = ch->getClass (ctx,
4760                                                     cop->getNameSpace (),
4761                                                     cop->getClassName (),
4762                                                     (Boolean)lo,
4763                                                     (Boolean)iq,
4764                                                     (Boolean)ic,
4765                                                     pl);
4766 schuur      1.5  
4767 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMClass*, jlong, new CIMClass (cls));
4768                     }
4769                     Catch(jEnv);
4770 mark.hamzy  1.20 
4771 mark.hamzy  1.62    return 0;
4772 schuur      1.1  }
4773                  
4774 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass
4775                     (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop)
4776 mark.hamzy  1.20 {
4777 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4778                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4779                     OperationContext  ctx;
4780                  
4781                     try {
4782                        ch->deleteClass (ctx,
4783                                         cop->getNameSpace (),
4784                                         cop->getClassName ());
4785                     }
4786                     Catch(jEnv);
4787 schuur      1.5  }
4788                  
4789 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass
4790                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jlong jCl)
4791 mark.hamzy  1.20 {
4792 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4793                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4794                     CIMClass         *cl  = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCl);
4795                     OperationContext  ctx;
4796 mark.hamzy  1.20 
4797 mark.hamzy  1.62    try {
4798                        ch->createClass (ctx,
4799                                         cop->getNameSpace (),
4800                                         *cl);
4801                     }
4802                     Catch(jEnv);
4803 schuur      1.5  }
4804                  
4805 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass
4806                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jlong jCl)
4807 mark.hamzy  1.20 {
4808 mark.hamzy  1.62    CIMOMHandle     *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4809                     CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4810                     CIMClass        *cl  = DEBUG_ConvertJavaToC (jlong, CIMClass*, jCl);
4811                     OperationContext ctx;
4812 mark.hamzy  1.20 
4813 mark.hamzy  1.62    try {
4814                       ch->modifyClass (ctx,
4815                                        cop->getNameSpace (),
4816                                        *cl);
4817                     }
4818                     Catch(jEnv);
4819 schuur      1.5  }
4820                  
4821 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames
4822                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean deep)
4823 mark.hamzy  1.20 {
4824 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4825                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4826                     CIMNamespaceName  ns  = cop->getNameSpace ();
4827                     OperationContext  ctx;
4828 mark.hamzy  1.51 
4829 mark.hamzy  1.62    try {
4830 marek       1.78       Array<CIMName> enm = ch->enumerateClassNames(ctx,
4831                                                                     cop->getNameSpace(),
4832                                                                     cop->getClassName(),
4833                                                                     (Boolean)deep);
4834 mark.hamzy  1.62       Array<CIMObjectPath> *enmop = new Array<CIMObjectPath> ();
4835 mark.hamzy  1.20 
4836 mark.hamzy  1.62       for (int i = 0, m = enm.size (); i < m; i++)
4837                        {
4838                           enmop->append (CIMObjectPath (String::EMPTY,
4839                                                         ns,
4840                                                         enm[i]));
4841                        }
4842 mark.hamzy  1.27 
4843 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, enmop);
4844 mark.hamzy  1.51    }
4845 mark.hamzy  1.62    Catch(jEnv);
4846 mark.hamzy  1.20 
4847 mark.hamzy  1.62    return 0;
4848 schuur      1.1  }
4849                  
4850 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses
4851                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean deep,
4852                          jboolean lo, jboolean iq, jboolean ic)
4853 mark.hamzy  1.20 {
4854 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4855                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4856                     OperationContext  ctx;
4857 mark.hamzy  1.20 
4858 mark.hamzy  1.62    try {
4859                        Array<CIMClass> en = ch->enumerateClasses (ctx,
4860 marek       1.78                                                  cop->getNameSpace(),
4861                                                                   cop->getClassName(),
4862 mark.hamzy  1.62                                                  (Boolean)deep,
4863                                                                   (Boolean)lo,
4864                                                                   (Boolean)iq,
4865                                                                   (Boolean)ic);
4866 schuur      1.1  
4867 marek       1.78       return DEBUG_ConvertCToJava(
4868                                   Array<CIMClass>*,
4869                                   jlong,
4870                                   new Array<CIMClass> (en));
4871 mark.hamzy  1.51    }
4872 mark.hamzy  1.62    Catch (jEnv);
4873 mark.hamzy  1.51 
4874 mark.hamzy  1.62    return 0;
4875 mark.hamzy  1.51 }
4876                  
4877 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance(
4878                      JNIEnv *jEnv,
4879                      jobject jThs,
4880                      jlong jCh,
4881                      jlong jCop,
4882                      jboolean lo,
4883                      jboolean iq,
4884                      jboolean ic,
4885                      jobjectArray jPl)
4886 mark.hamzy  1.51 {
4887 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4888                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4889                     OperationContext  ctx;
4890                     CIMPropertyList   pl;
4891                  
4892                     if (jPl)
4893                        pl = getList (jEnv,jPl);
4894                     else
4895                        pl = CIMPropertyList ();
4896                  
4897                     try {
4898 marek       1.78       CIMInstance *inst = new CIMInstance(ch->getInstance(
4899                                                                    ctx,
4900                                                                    cop->getNameSpace(),
4901                                                                    *cop,
4902                                                                    (Boolean)lo,
4903                                                                    (Boolean)iq,
4904                                                                    (Boolean)ic,
4905                                                                    pl));
4906 mark.hamzy  1.51 
4907 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMInstance*, jlong, inst);
4908 mark.hamzy  1.51    }
4909 mark.hamzy  1.62    Catch (jEnv);
4910 mark.hamzy  1.20 
4911 mark.hamzy  1.62    return 0;
4912 schuur      1.1  }
4913                  
4914 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
4915                     (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop)
4916 mark.hamzy  1.20 {
4917 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4918                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4919                     OperationContext  ctx;
4920 mark.hamzy  1.20 
4921 mark.hamzy  1.62    try {
4922                        ch->deleteInstance (ctx,cop->getNameSpace (),*cop);
4923                     }
4924                     Catch (jEnv);
4925 schuur      1.1  }
4926                  
4927 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance
4928                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jlong jCi)
4929                  {
4930                     CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4931                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4932                     CIMInstance      *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi);
4933                     OperationContext  ctx;
4934 schuur      1.1  
4935 mark.hamzy  1.62    try {
4936                        ci->setPath (*cop);
4937 mark.hamzy  1.53 
4938 mark.hamzy  1.62       CIMObjectPath obj = ch->createInstance (ctx,
4939                                                                cop->getNameSpace (),
4940                                                                *ci);
4941 mark.hamzy  1.53 
4942 marek       1.78       return DEBUG_ConvertCToJava(CIMObjectPath*,jlong,new CIMObjectPath(obj));
4943 mark.hamzy  1.53    }
4944 mark.hamzy  1.62    Catch (jEnv);
4945 mark.hamzy  1.20 
4946 mark.hamzy  1.62    return 0;
4947 schuur      1.1  }
4948                  
4949 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance
4950                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jlong jCi,
4951                           jboolean iq, jobjectArray jPl)
4952 mark.hamzy  1.20 {
4953 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4954                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4955                     CIMInstance      *ci  = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi);
4956                     CIMPropertyList   pl  = getList (jEnv, jPl);
4957                     OperationContext  ctx;
4958 mark.hamzy  1.20 
4959 mark.hamzy  1.62    try {
4960                        ci->setPath (*cop);
4961                        ch->modifyInstance (ctx,
4962                                            cop->getNameSpace (),
4963                                            *ci,
4964                                            (Boolean)iq,
4965                                            pl);
4966                     }
4967                     Catch (jEnv);
4968 schuur      1.1  }
4969                  
4970 kumpf       1.87 JNIEXPORT jlong JNICALL
4971 marek       1.78 Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames(
4972                      JNIEnv *jEnv,
4973                      jobject jThs,
4974                      jlong jCh,
4975                      jlong jCop,
4976                      jboolean deep)
4977 mark.hamzy  1.20 {
4978 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
4979                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
4980                     OperationContext  ctx;
4981 mark.hamzy  1.20 
4982 mark.hamzy  1.62    try {
4983 marek       1.78       Array<CIMObjectPath> enm = ch->enumerateInstanceNames(
4984                                                           ctx,
4985                                                           cop->getNameSpace(),
4986                                                           cop->getClassName());
4987                        return DEBUG_ConvertCToJava(
4988                                   Array<CIMObjectPath>*,
4989                                   jlong,
4990                                   new Array<CIMObjectPath> (enm));
4991 mark.hamzy  1.62    }
4992                     Catch (jEnv);
4993 mark.hamzy  1.20 
4994 mark.hamzy  1.62    return 0;
4995 schuur      1.1  }
4996                  
4997 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances
4998                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jboolean deep,
4999                          jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl)
5000 mark.hamzy  1.20 {
5001 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5002                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5003                     CIMPropertyList   pl;
5004                     OperationContext  ctx;
5005 mark.hamzy  1.20 
5006 mark.hamzy  1.62    if (jPl)
5007                        pl = getList (jEnv, jPl);
5008 mark.hamzy  1.20    else
5009 mark.hamzy  1.62       pl = CIMPropertyList ();
5010 mark.hamzy  1.20 
5011 mark.hamzy  1.62    try {
5012                        Array<CIMInstance> en = ch->enumerateInstances (ctx,
5013                                                                        cop->getNameSpace (),
5014                                                                        cop->getClassName (),
5015                                                                        (Boolean)deep,
5016                                                                        (Boolean)lo,
5017                                                                        (Boolean)iq,
5018                                                                        (Boolean)ic,
5019                                                                        pl);
5020 schuur      1.1  
5021 marek       1.78       return DEBUG_ConvertCToJava(
5022                                   Array<CIMInstance>*,
5023                                   jlong,
5024                                   new Array<CIMInstance> (en));
5025 mark.hamzy  1.62    }
5026                     Catch (jEnv);
5027 mark.hamzy  1.20 
5028 mark.hamzy  1.62    return 0;
5029 schuur      1.1  }
5030                  
5031 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery(
5032                      JNIEnv *jEnv,
5033                      jobject jThs,
5034                      jlong jCh,
5035                      jlong jCop,
5036                      jstring jQuery,
5037                      jstring jQl)
5038 mark.hamzy  1.20 {
5039 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5040                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5041                     OperationContext  ctx;
5042                     const char       *str = jEnv->GetStringUTFChars (jQuery,NULL);
5043                     String            query (str);
5044 mark.hamzy  1.20 
5045 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jQuery,str);
5046 mark.hamzy  1.20 
5047 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jQl, NULL);
5048 schuur      1.1  
5049 mark.hamzy  1.62    String ql (str);
5050 mark.hamzy  1.20 
5051 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jQl, str);
5052 schuur      1.1  
5053 mark.hamzy  1.62    try {
5054                        Array<CIMObject>    enm = ch->execQuery (ctx,
5055                                                                 cop->getNameSpace (),
5056                                                                 ql,
5057                                                                 query);
5058                        Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
5059 mark.hamzy  1.20 
5060 mark.hamzy  1.62       for (int i = 0,m = enm.size (); i<m; i++)
5061                        {
5062                           enmInst->append (CIMInstance (enm[i]));
5063                        }
5064 schuur      1.1  
5065 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
5066                     }
5067                     Catch (jEnv);
5068 mark.hamzy  1.20 
5069 mark.hamzy  1.62    return 0;
5070 schuur      1.1  }
5071                  
5072 mark.hamzy  1.20 
5073 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
5074                     (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jstring jN)
5075 mark.hamzy  1.20 {
5076 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5077                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5078                     OperationContext  ctx;
5079                     const char       *str = jEnv->GetStringUTFChars (jN, NULL);
5080                     CIMName           prop (str);
5081 mark.hamzy  1.20 
5082 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
5083 schuur      1.1  
5084 mark.hamzy  1.62    try {
5085                        CIMValue *cv = new CIMValue (ch->getProperty (ctx,
5086                                                                      cop->getNameSpace (),
5087                                                                      *cop,
5088                                                                      prop));
5089 mark.hamzy  1.35 
5090 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
5091                     }
5092                     Catch (jEnv);
5093 mark.hamzy  1.35 
5094 mark.hamzy  1.62    return 0;
5095 mark.hamzy  1.35 }
5096                  
5097 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty
5098                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jstring jPn, jlong jV)
5099 mark.hamzy  1.20 {
5100 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5101                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5102                     OperationContext  ctx;
5103                     CIMValue         *val = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
5104                     const char       *str = jEnv->GetStringUTFChars (jPn, NULL);
5105                     CIMName           pName (str);
5106 mark.hamzy  1.20 
5107 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jPn, str);
5108 schuur      1.1  
5109 mark.hamzy  1.62    try {
5110                        ch->setProperty (ctx,
5111                                         cop->getNameSpace (),
5112                                         *cop,
5113                                         pName,
5114                                         *val);
5115                     }
5116                     Catch (jEnv);
5117 schuur      1.1  }
5118                  
5119 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames(
5120                      JNIEnv *jEnv,
5121                      jobject jThs,
5122                      jlong jCh,
5123                      jlong jCop,
5124                      jstring jAssocClass,
5125                      jstring jResultClass,
5126                      jstring jRole,
5127                      jstring jResultRole)
5128 mark.hamzy  1.20 {
5129 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5130                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5131                     OperationContext  ctx;
5132                     const char       *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
5133 mark.hamzy  1.20 
5134 mark.hamzy  1.62    CIMName           assocClass;
5135 mark.hamzy  1.56 
5136 mark.hamzy  1.62    if (  str
5137                        && *str
5138                        )
5139 mark.hamzy  1.44    {
5140 mark.hamzy  1.62       if (CIMName::legal (str))
5141                        {
5142                           assocClass = str;
5143                        }
5144                        else
5145                        {
5146                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5147                                                         JMPIjvm::jv.CIMExceptionNewISt,
5148                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5149 marek       1.78                                        jEnv->NewStringUTF(
5150                                                             "Invalid association class name"));
5151 mark.hamzy  1.56 
5152 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
5153 mark.hamzy  1.56 
5154 mark.hamzy  1.62          return 0;
5155                        }
5156 schuur      1.1     }
5157 mark.hamzy  1.20 
5158 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
5159 mark.hamzy  1.35 
5160 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultClass, NULL);
5161 schuur      1.1  
5162 mark.hamzy  1.62    CIMName resultClass;
5163 mark.hamzy  1.20 
5164 mark.hamzy  1.62    if (  str
5165                        && *str
5166                        )
5167 mark.hamzy  1.44    {
5168 mark.hamzy  1.62       if (CIMName::legal (str))
5169                        {
5170                           resultClass = str;
5171                        }
5172                        else
5173                        {
5174                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5175                                                         JMPIjvm::jv.CIMExceptionNewISt,
5176                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5177 marek       1.78                                        jEnv->NewStringUTF(
5178                                                             "Invalid result class name"));
5179 mark.hamzy  1.56 
5180 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
5181 mark.hamzy  1.56 
5182 mark.hamzy  1.62          return 0;
5183                        }
5184 schuur      1.1     }
5185 mark.hamzy  1.56 
5186 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultClass, str);
5187                  
5188                     str = jEnv->GetStringUTFChars (jRole, NULL);
5189 mark.hamzy  1.56 
5190 mark.hamzy  1.62    String role (str);
5191 mark.hamzy  1.20 
5192 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
5193 mark.hamzy  1.35 
5194 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultRole, NULL);
5195 schuur      1.1  
5196 mark.hamzy  1.62    String resultRole (str);
5197 mark.hamzy  1.20 
5198 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultRole, str);
5199 mark.hamzy  1.56 
5200 mark.hamzy  1.62    try {
5201                        Array<CIMObjectPath> enm = ch->associatorNames (ctx,
5202                                                                        cop->getNameSpace (),
5203                                                                        *cop,
5204                                                                        assocClass,
5205                                                                        resultClass,
5206                                                                        role,
5207                                                                        resultRole);
5208 mark.hamzy  1.56 
5209 marek       1.78       return DEBUG_ConvertCToJava(
5210                                   Array<CIMObjectPath>*,
5211                                   jlong,
5212                                   new Array<CIMObjectPath> (enm));
5213 schuur      1.1     }
5214 mark.hamzy  1.62    Catch (jEnv);
5215 mark.hamzy  1.56 
5216 mark.hamzy  1.62    return 0;
5217 schuur      1.1  }
5218                  
5219 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators(
5220                      JNIEnv *jEnv,
5221                      jobject jThs,
5222                      jlong jCh,
5223                      jlong jCop,
5224                      jstring jAssocClass,
5225                      jstring jResultClass,
5226                      jstring jRole,
5227                      jstring jResultRole,
5228                      jboolean includeQualifiers,
5229                      jboolean includeClassOrigin,
5230                      jobjectArray jPl)
5231 mark.hamzy  1.20 {
5232 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5233                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5234                     OperationContext  ctx;
5235                     CIMPropertyList   pl  = getList (jEnv, jPl);
5236                     const char       *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
5237                     CIMName           assocClass;
5238 mark.hamzy  1.20 
5239 mark.hamzy  1.62    if (  str
5240                        && *str
5241                        )
5242 mark.hamzy  1.44    {
5243 mark.hamzy  1.62       if (CIMName::legal (str))
5244                        {
5245                           assocClass = str;
5246                        }
5247                        else
5248                        {
5249                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5250                                                         JMPIjvm::jv.CIMExceptionNewISt,
5251                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5252 marek       1.78                                        jEnv->NewStringUTF(
5253                                                             "Invalid association class name"));
5254 mark.hamzy  1.56 
5255 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
5256 mark.hamzy  1.56 
5257 mark.hamzy  1.62          return 0;
5258                        }
5259 schuur      1.1     }
5260 mark.hamzy  1.56 
5261 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
5262 mark.hamzy  1.56 
5263 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultClass, NULL);
5264 mark.hamzy  1.20 
5265 mark.hamzy  1.62    CIMName resultClass;
5266 mark.hamzy  1.35 
5267 mark.hamzy  1.62    if (  str
5268                        && *str
5269                        )
5270 mark.hamzy  1.44    {
5271 mark.hamzy  1.62       if (CIMName::legal (str))
5272                        {
5273                           resultClass = str;
5274                        }
5275                        else
5276                        {
5277                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5278                                                         JMPIjvm::jv.CIMExceptionNewISt,
5279                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5280 marek       1.78                                        jEnv->NewStringUTF(
5281                                                             "Invalid result class name"));
5282 mark.hamzy  1.27 
5283 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
5284 mark.hamzy  1.27 
5285 mark.hamzy  1.62          return 0;
5286                        }
5287 schuur      1.1     }
5288                  
5289 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultClass, str);
5290 mark.hamzy  1.20 
5291 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
5292 schuur      1.1  
5293 mark.hamzy  1.62    String role (str);
5294 mark.hamzy  1.20 
5295 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
5296 mark.hamzy  1.56 
5297 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jResultRole, NULL);
5298 mark.hamzy  1.20 
5299 mark.hamzy  1.62    String resultRole (str);
5300 mark.hamzy  1.35 
5301 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jResultRole, str);
5302 mark.hamzy  1.35 
5303 mark.hamzy  1.62    try {
5304 marek       1.78       Array<CIMObject> enm = ch->associators(
5305                                                       ctx,
5306                                                       cop->getNameSpace(),
5307                                                       *cop,
5308                                                       assocClass,
5309                                                       resultClass,
5310                                                       role,
5311                                                       resultRole,
5312                                                       (Boolean)includeQualifiers,
5313                                                       (Boolean)includeClassOrigin,
5314                                                       pl);
5315 mark.hamzy  1.62       Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
5316 mark.hamzy  1.35 
5317 mark.hamzy  1.62       for (int i = 0, m = enm.size (); i < m; i++)
5318                        {
5319                           enmInst->append (CIMInstance (enm[i]));
5320                        }
5321 mark.hamzy  1.56 
5322 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
5323                     }
5324                     Catch (jEnv);
5325 mark.hamzy  1.35 
5326 mark.hamzy  1.62    return 0;
5327 mark.hamzy  1.35 }
5328                  
5329 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames
5330                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop,
5331                     jstring jAssocClass, jstring jRole)
5332 mark.hamzy  1.35 {
5333 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5334                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5335                     OperationContext  ctx;
5336                     const char       *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
5337                     CIMName           assocClass;
5338                  
5339                     if (  str
5340                        && *str
5341                        )
5342                     {
5343                        if (CIMName::legal (str))
5344                        {
5345                           assocClass = str;
5346                        }
5347                        else
5348                        {
5349                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5350                                                         JMPIjvm::jv.CIMExceptionNewISt,
5351                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5352 marek       1.78                                        jEnv->NewStringUTF(
5353                                                             "Invalid association class name"));
5354 mark.hamzy  1.35 
5355 mark.hamzy  1.62          jEnv->Throw ((jthrowable)ev);
5356 mark.hamzy  1.56 
5357 mark.hamzy  1.62          return 0;
5358                        }
5359                     }
5360 mark.hamzy  1.35 
5361 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
5362 mark.hamzy  1.35 
5363 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
5364 schuur      1.1  
5365 mark.hamzy  1.62    String role (str);
5366 mark.hamzy  1.20 
5367 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
5368 mark.hamzy  1.56 
5369 mark.hamzy  1.62    try {
5370                        Array<CIMObjectPath> enm = ch->referenceNames (ctx,
5371                                                                       cop->getNameSpace (),
5372                                                                       *cop,
5373                                                                       assocClass,
5374                                                                       role);
5375 mark.hamzy  1.20 
5376 marek       1.78       return DEBUG_ConvertCToJava(
5377                                   Array<CIMObjectPath>*,
5378                                   jlong,
5379                                   new Array<CIMObjectPath> (enm));
5380 mark.hamzy  1.62    }
5381                     Catch (jEnv);
5382 mark.hamzy  1.35 
5383 mark.hamzy  1.62    return 0;
5384 mark.hamzy  1.35 }
5385                  
5386 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references
5387                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop,
5388                     jstring jAssocClass, jstring jRole,
5389                     jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
5390 mark.hamzy  1.35 {
5391 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5392                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5393                     OperationContext  ctx;
5394                     CIMPropertyList   pl  = getList (jEnv, jPl);
5395                     const char       *str = jEnv->GetStringUTFChars (jAssocClass, NULL);
5396                     CIMName           assocClass;
5397 mark.hamzy  1.35 
5398 mark.hamzy  1.62    if (  str
5399                        && *str
5400                        )
5401 mark.hamzy  1.61    {
5402 mark.hamzy  1.62       if (CIMName::legal (str))
5403                        {
5404                           assocClass = str;
5405                        }
5406                        else
5407                        {
5408                           jobject ev = jEnv->NewObject (JMPIjvm::jv.CIMExceptionClassRef,
5409                                                         JMPIjvm::jv.CIMExceptionNewISt,
5410                                                         (jint)4, // CIM_ERR_INVALID_PARAMETER
5411 marek       1.78                                        jEnv->NewStringUTF(
5412                                                             "Invalid association class name"));
5413 mark.hamzy  1.62 
5414                           jEnv->Throw ((jthrowable)ev);
5415                  
5416                           return 0;
5417                        }
5418 mark.hamzy  1.61    }
5419 mark.hamzy  1.56 
5420 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jAssocClass, str);
5421 mark.hamzy  1.35 
5422 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jRole, NULL);
5423 mark.hamzy  1.35 
5424 mark.hamzy  1.62    String role (str);
5425 mark.hamzy  1.35 
5426 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jRole, str);
5427 mark.hamzy  1.35 
5428 mark.hamzy  1.62    try {
5429                        Array<CIMObject>    enm     = ch->references (ctx,
5430                                                                      cop->getNameSpace (),
5431                                                                      *cop,
5432                                                                      assocClass,
5433                                                                      role,
5434                                                                      (Boolean)includeQualifiers,
5435                                                                      (Boolean)includeClassOrigin,
5436                                                                      pl);
5437                        Array<CIMInstance> *enmInst = new Array<CIMInstance> ();
5438 mark.hamzy  1.56 
5439 mark.hamzy  1.62       for (int i = 0, m = enm.size (); i < m; i++)
5440                        {
5441                           enmInst->append (CIMInstance (enm[i]));
5442                        }
5443 mark.hamzy  1.35 
5444 mark.hamzy  1.62       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst);
5445                     }
5446                     Catch (jEnv);
5447 mark.hamzy  1.35 
5448 mark.hamzy  1.62    return 0;
5449 mark.hamzy  1.35 }
5450                  
5451 marek       1.78 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod(
5452                      JNIEnv *jEnv,
5453                      jobject jThs,
5454                      jlong jCh,
5455                      jlong jCop,
5456                      jstring jMn,
5457                      jobject jIn,
5458                      jobject jOut)
5459 mark.hamzy  1.35 {
5460 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
5461                  
5462                     CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5463                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5464                     OperationContext  ctx;
5465                     const char       *str = jEnv->GetStringUTFChars (jMn,NULL);
5466                     CIMName           method (str);
5467                  
5468                     jEnv->ReleaseStringUTFChars (jMn,str);
5469                  
5470                     Array<CIMParamValue> in;
5471                     Array<CIMParamValue> out;
5472 mark.hamzy  1.35 
5473 marek       1.78    for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize);i<m;i++)
5474 mark.hamzy  1.62    {
5475                         JMPIjvm::checkException (jEnv);
5476 mark.hamzy  1.56 
5477 marek       1.78        jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
5478 mark.hamzy  1.35 
5479 mark.hamzy  1.62        JMPIjvm::checkException (jEnv);
5480 mark.hamzy  1.35 
5481 marek       1.78        jlong jp = jEnv->CallLongMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
5482 mark.hamzy  1.62        CIMProperty *p  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jp);
5483 schuur      1.1  
5484 mark.hamzy  1.62        JMPIjvm::checkException (jEnv);
5485 mark.hamzy  1.35 
5486 mark.hamzy  1.62        in.append (CIMParamValue (p->getName ().getString (),p->getValue ()));
5487                     }
5488                     try {
5489                        CIMValue *val = new CIMValue (ch->invokeMethod (ctx,
5490                                                                        cop->getNameSpace (),
5491                                                                        *cop,
5492                                                                        method,
5493                                                                        in,
5494                                                                        out));
5495 mark.hamzy  1.20 
5496 mark.hamzy  1.62       for (int i = 0,m = out.size (); i<m; i++)
5497                        {
5498                           const CIMParamValue &parm = out[i];
5499                           const CIMValue       v    = parm.getValue ();
5500                           CIMProperty         *p    = new CIMProperty (parm.getParameterName (),
5501                                                                        v,
5502                                                                        v.getArraySize ());
5503 marek       1.78          jlong jp   = DEBUG_ConvertCToJava (CIMProperty*, jlong, p);
5504                           jobject prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,
5505                                                           JMPIjvm::jv.CIMPropertyNewJ,
5506                                                           jp);
5507 schuur      1.1  
5508 mark.hamzy  1.62          jEnv->CallVoidMethod (jOut, JMPIjvm::jv.VectorAddElement, prop);
5509                        }
5510                        return DEBUG_ConvertCToJava (CIMValue*, jlong, val);
5511                     }
5512                     Catch (jEnv);
5513 mark.hamzy  1.20 
5514 mark.hamzy  1.62    return 0;
5515 schuur      1.1  }
5516                  
5517 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24
5518                    (JNIEnv *jEnv, jobject jThs, jlong jCh, jlong jCop, jstring jMn,
5519                          jobjectArray jIn, jobjectArray jOut)
5520                  
5521 mark.hamzy  1.20 {
5522 mark.hamzy  1.44    JMPIjvm::cacheIDs (jEnv);
5523 mark.hamzy  1.30 
5524 mark.hamzy  1.62    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5525                     CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop);
5526                     OperationContext  ctx;
5527                     const char       *str = jEnv->GetStringUTFChars (jMn, NULL);
5528                     CIMName           method (str);
5529 mark.hamzy  1.20 
5530 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jMn, str);
5531 mark.hamzy  1.20 
5532 mark.hamzy  1.62    Array<CIMParamValue> in;
5533                     Array<CIMParamValue> out;
5534 schuur      1.1  
5535 mark.hamzy  1.62    if (jIn)
5536 mark.hamzy  1.35    {
5537 mark.hamzy  1.62       for (int i = 0, m = jEnv->GetArrayLength (jIn); i < m; i++)
5538 mark.hamzy  1.35       {
5539 mark.hamzy  1.62           JMPIjvm::checkException (jEnv);
5540 mark.hamzy  1.56 
5541 mark.hamzy  1.62           jobject jArg = jEnv->GetObjectArrayElement (jIn,i);
5542 mark.hamzy  1.56 
5543 mark.hamzy  1.62           JMPIjvm::checkException (jEnv);
5544 mark.hamzy  1.56 
5545 marek       1.78           jlong jp = jEnv->CallLongMethod (jArg,JMPIjvm::jv.CIMArgumentCInst);
5546 mark.hamzy  1.62           CIMParamValue *p  = DEBUG_ConvertJavaToC (jlong, CIMParamValue*, jp);
5547 mark.hamzy  1.56 
5548 mark.hamzy  1.62           JMPIjvm::checkException (jEnv);
5549 mark.hamzy  1.56 
5550 mark.hamzy  1.62           in.append (*p);
5551 mark.hamzy  1.35       }
5552 mark.hamzy  1.62    }
5553                     try {
5554                        CIMValue *val = new CIMValue (ch->invokeMethod (ctx,
5555                                                                        cop->getNameSpace (),
5556                                                                        *cop,
5557                                                                        method,
5558                                                                        in,
5559                                                                        out));
5560                  
5561                        if (jOut)
5562 mark.hamzy  1.56       {
5563 marek       1.78          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut);i<m && i<o;i++)
5564 mark.hamzy  1.35          {
5565 mark.hamzy  1.62             CIMParamValue *parm  = new CIMParamValue (out[i]);
5566 marek       1.78             jlong jParm = DEBUG_ConvertCToJava (CIMParamValue*, jlong, parm);
5567 mark.hamzy  1.35 
5568 marek       1.78             jEnv->SetObjectArrayElement(
5569                                  jOut,
5570                                  i,
5571                                  jEnv->NewObject(
5572                                      JMPIjvm::jv.CIMArgumentClassRef,
5573                                      JMPIjvm::jv.CIMArgumentNewJ,jParm));
5574 schuur      1.1           }
5575 mark.hamzy  1.35       }
5576 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMValue*, jlong, val);
5577 schuur      1.1     }
5578 mark.hamzy  1.62    Catch (jEnv);
5579                  
5580                     return 0;
5581                  }
5582                  
5583 marek       1.78 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(
5584                      JNIEnv *jEnv,
5585                      jobject jThs,
5586                      jlong jCh,
5587                      jstring jName,
5588                      jstring jNs,
5589                      jlong jInd)
5590 mark.hamzy  1.62 {
5591                     CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5592                     CIMInstance *ind = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jInd);
5593                     const char  *str = jEnv->GetStringUTFChars (jName, NULL);
5594                     String       name (str);
5595 mark.hamzy  1.35 
5596 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jName, str);
5597 mark.hamzy  1.35 
5598 mark.hamzy  1.62    str = jEnv->GetStringUTFChars (jNs, NULL);
5599 mark.hamzy  1.35 
5600 mark.hamzy  1.62    String ns (str);
5601 mark.hamzy  1.35 
5602 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jNs, str);
5603 mark.hamzy  1.35 
5604 mark.hamzy  1.62    CIMObjectPath ref (ind->getPath ());
5605 mark.hamzy  1.35 
5606 mark.hamzy  1.62    ref.setNameSpace (ns);
5607 thilo.boehm 1.79 
5608                     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
5609                         "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ref = %s",
5610                         (const char*)ref.toString().getCString()));
5611                     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
5612                         "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ind = %s",
5613                         (const char*)ind->getPath().toString().getCString()));
5614 marek       1.78 
5615 mark.hamzy  1.62    ind->setPath (ref);
5616 kumpf       1.87 
5617 thilo.boehm 1.79    PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
5618                         "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): ind = %s",
5619                         (const char*)ind->getPath().toString().getCString()));
5620 marek       1.78 
5621                     JMPIProviderManager::indProvRecord *prec = NULL;
5622                     String sPathString = ind->getPath ().toString ();
5623                     OperationContext *context = NULL;
5624                     bool fResult = false;
5625 mark.hamzy  1.35 
5626 mark.hamzy  1.62    {
5627                        AutoMutex lock (JMPIProviderManager::mutexProvTab);
5628 mark.hamzy  1.35 
5629 mark.hamzy  1.62       fResult = JMPIProviderManager::provTab.lookup (name, prec);
5630 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
5631                            "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
5632                            "fResult = %d, name = %s",
5633                            fResult,(const char*)name.getCString()));
5634 mark.hamzy  1.62    }
5635 mark.hamzy  1.35 
5636 mark.hamzy  1.62    if (fResult)
5637                     {
5638                        if (prec->enabled)
5639                        {
5640                           try
5641                           {
5642                              prec->handler->deliver (*prec->ctx, *ind);
5643                           }
5644                           Catch (jEnv);
5645 mark.hamzy  1.35       }
5646 mark.hamzy  1.62    }
5647                     else
5648                     {
5649 marek       1.81       PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL1,
5650 thilo.boehm 1.79           "Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent(): "
5651                            "provider name \"%s\" not found",
5652                            (const char*)name.getCString()));
5653 mark.hamzy  1.62    }
5654                  }
5655 mark.hamzy  1.35 
5656 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1finalize
5657                     (JNIEnv *jEnv, jobject jThs, jlong jCh)
5658                  {
5659                     CIMOMHandle *ch = DEBUG_ConvertJavaToC (jlong, CIMOMHandle*, jCh);
5660 mark.hamzy  1.35 
5661 mark.hamzy  1.62    delete ch;
5662 mark.hamzy  1.35 
5663 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jCh);
5664                  }
5665 mark.hamzy  1.35 
5666                  
5667 mark.hamzy  1.62 // -------------------------------------
5668                  // ---
5669 marek       1.78 // -        CIMParameter
5670 mark.hamzy  1.67 // ---
5671                  // -------------------------------------
5672                  
5673                  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMParameter__1getName
5674                     (JNIEnv *jEnv, jobject jThs, jlong jCp)
5675                  {
5676                     CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5677                     jstring       rv  = 0;
5678                  
5679                     if (cp)
5680                     {
5681                        try
5682                        {
5683                           CIMName name = cp->getName ();
5684                  
5685                           rv = jEnv->NewStringUTF (name.getString ().getCString ());
5686                        }
5687                        Catch (jEnv);
5688                     }
5689                  
5690                     return rv;
5691 mark.hamzy  1.67 }
5692                  
5693 dave.sudlik 1.74 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMParameter__1setName
5694 mark.hamzy  1.67    (JNIEnv *jEnv, jobject jThs, jlong jCp, jstring jName)
5695                  {
5696                     CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5697                  
5698                     if (cp && jName)
5699                     {
5700                        try
5701                        {
5702                           const char *cstrName = jEnv->GetStringUTFChars (jName, NULL);
5703                  
5704                           CIMName name (cstrName);
5705                  
5706                           cp->setName (name);
5707                  
5708                           jEnv->ReleaseStringUTFChars (jName, cstrName);
5709                        }
5710                        Catch (jEnv);
5711                     }
5712                  }
5713                  
5714                  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMParameter__1isArray
5715 mark.hamzy  1.67    (JNIEnv *jEnv, jobject jThs, jlong jCp)
5716                  {
5717                     CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5718                     jboolean      rv  = 0;
5719                  
5720                     if (cp)
5721                     {
5722                        try
5723                        {
5724                           rv = cp->isArray ();
5725                        }
5726                        Catch (jEnv);
5727                     }
5728                  
5729                     return rv;
5730                  }
5731                  
5732                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMParameter__1getArraySize
5733                     (JNIEnv *jEnv, jobject jThs, jlong jCp)
5734                  {
5735                     CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5736 mark.hamzy  1.67    jint          rv  = 0;
5737                  
5738                     if (cp)
5739                     {
5740                        try
5741                        {
5742                           rv = cp->getArraySize ();
5743                        }
5744                        Catch (jEnv);
5745                     }
5746                  
5747                     return rv;
5748                  }
5749                  
5750 kumpf       1.87 JNIEXPORT jstring JNICALL
5751 marek       1.78 Java_org_pegasus_jmpi_CIMParameter__1getReferenceClassName(
5752                      JNIEnv *jEnv,
5753                      jobject jThs,
5754                      jlong jCp)
5755 mark.hamzy  1.67 {
5756                     CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5757                     jstring       rv  = 0;
5758                  
5759                     if (cp)
5760                     {
5761                        try
5762                        {
5763                           CIMName name = cp->getReferenceClassName ();
5764                  
5765                           rv = jEnv->NewStringUTF (name.getString ().getCString ());
5766                        }
5767                        Catch (jEnv);
5768                     }
5769                  
5770                     return rv;
5771                  }
5772                  
5773                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMParameter__1getType
5774                     (JNIEnv *jEnv, jobject jThs, jlong jCp)
5775                  {
5776 mark.hamzy  1.67    CIMParameter *cp  = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5777                     jlong         rv  = 0;
5778                  
5779                     if (cp)
5780                     {
5781                        try
5782                        {
5783                           CIMType    ct       = cp->getType ();
5784                           bool       fSuccess = false;
5785                           String     ref      = cp->getReferenceClassName ().getString ();
5786                           int        iJType   = 0;
5787                           _dataType *type     = 0;
5788                  
5789                           iJType = _dataType::convertCTypeToJavaType (ct, &fSuccess);
5790                  
5791                           if (fSuccess)
5792                           {
5793                              type = new _dataType (iJType,
5794                                                    cp->getArraySize (),
5795                                                    false,
5796                                                    false,
5797 mark.hamzy  1.67                                   cp->isArray (),
5798                                                    ref,
5799                                                    true);
5800                  
5801                              rv = DEBUG_ConvertCToJava (_dataType*, jlong, type);
5802                           }
5803                        }
5804                        Catch (jEnv);
5805                     }
5806                  
5807                     return rv;
5808                  }
5809                  
5810                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMParameter__1finalize
5811                     (JNIEnv *jEnv, jobject jThs, jlong jCp)
5812                  {
5813                     CIMParameter *cp = DEBUG_ConvertJavaToC (jlong, CIMParameter*, jCp);
5814                  
5815                     delete cp;
5816                  
5817                     DEBUG_ConvertCleanup (jlong, jCp);
5818 mark.hamzy  1.67 }
5819                  
5820                  
5821                  // -------------------------------------
5822                  // ---
5823 marek       1.78 // -        CIMProperty
5824 mark.hamzy  1.62 // ---
5825                  // -------------------------------------
5826 mark.hamzy  1.35 
5827 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
5828                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5829                  {
5830                     CIMProperty *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5831                     CIMValue    *cv = new CIMValue (cp->getValue ());
5832 mark.hamzy  1.35 
5833 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
5834                  }
5835 mark.hamzy  1.35 
5836 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
5837                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5838                  {
5839                     CIMProperty  *cp  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5840                     const String &n   = cp->getName ().getString ();
5841                     jstring       str = jEnv->NewStringUTF (n.getCString ());
5842                  
5843                     return str;
5844                  }
5845                  
5846                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
5847                        (JNIEnv *jEnv, jobject jThs, jlong jP, jstring jN)
5848                  {
5849                     CIMProperty *cp  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5850                     const char  *str = jEnv->GetStringUTFChars (jN,NULL);
5851 mark.hamzy  1.35 
5852 mark.hamzy  1.62    cp->setName (CIMName (str));
5853 mark.hamzy  1.35 
5854 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
5855                  }
5856 mark.hamzy  1.35 
5857 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
5858                        (JNIEnv *jEnv, jobject jThs, jstring jN, jlong jV)
5859                  {
5860                     CIMValue    *cv  = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
5861                     const char  *str = jEnv->GetStringUTFChars (jN, NULL);
5862                     CIMProperty *cp  = 0;
5863                     jlong        jCp = 0;
5864 mark.hamzy  1.35 
5865 mark.hamzy  1.62    try {
5866                        if (cv->getType ()!= CIMTYPE_REFERENCE)
5867                        {
5868                           cp = new CIMProperty (String (str),*cv);
5869 mark.hamzy  1.35       }
5870 mark.hamzy  1.62       else
5871 mark.hamzy  1.35       {
5872 mark.hamzy  1.62          if (!cv->isArray ())
5873                           {
5874                              CIMObjectPath cop;
5875 mark.hamzy  1.35 
5876 mark.hamzy  1.62             cv->get (cop);
5877                              cp = new CIMProperty (String (str),*cv,0, cop.getClassName ());
5878                           }
5879                           else
5880                           {
5881 marek       1.78             throwCIMException(
5882                                  jEnv,
5883                                  "+++ unsupported type in CIMProperty.property");
5884 mark.hamzy  1.62          }
5885                        }
5886 mark.hamzy  1.35 
5887 mark.hamzy  1.62       jCp = DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
5888                     }
5889                     Catch (jEnv);
5890 mark.hamzy  1.35 
5891 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
5892 mark.hamzy  1.56 
5893 mark.hamzy  1.62    return jCp;
5894                  }
5895 mark.hamzy  1.56 
5896 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
5897                        (JNIEnv *jEnv, jobject jThs, jstring jN, jlong jV)
5898                  {
5899                     CIMProperty *p = new CIMProperty (CIMName (),CIMValue ());
5900 mark.hamzy  1.56 
5901 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMProperty*, jlong, p);
5902                  }
5903 mark.hamzy  1.35 
5904 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
5905                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5906                  {
5907                     CIMProperty *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5908 mark.hamzy  1.35 
5909 mark.hamzy  1.62    return (jboolean) (cp->getType () == CIMTYPE_REFERENCE);
5910                  }
5911 mark.hamzy  1.35 
5912 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
5913                       (JNIEnv *jEnv, jobject jThs, jlong jP)
5914                  {
5915                     CIMProperty   *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5916                     const String  &n  = cp->getReferenceClassName ().getString ();
5917 mark.hamzy  1.35 
5918 mark.hamzy  1.62    jstring str = jEnv->NewStringUTF (n.getCString ());
5919 mark.hamzy  1.35 
5920 mark.hamzy  1.62    return str;
5921                  }
5922 mark.hamzy  1.35 
5923 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
5924                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5925                  {
5926 mark.hamzy  1.67    CIMProperty  *cp       = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5927                     String        ref      = cp->getReferenceClassName ().getString ();
5928                     bool          fSuccess = false;
5929                     int           iJType   = 0;
5930                     _dataType     *type    = 0;
5931 mark.hamzy  1.35 
5932 mark.hamzy  1.62    iJType = _dataType::convertCTypeToJavaType (cp->getType (), &fSuccess);
5933 mark.hamzy  1.35 
5934 mark.hamzy  1.62    if (fSuccess)
5935                     {
5936                        type = new _dataType (iJType,
5937                                              cp->getArraySize (),
5938                                              ref.size () ? true : false,
5939                                              false,
5940                                              cp->isArray (),
5941                                              ref,
5942                                              true);
5943                     }
5944 mark.hamzy  1.35 
5945 mark.hamzy  1.62    return DEBUG_ConvertCToJava (_dataType*, jlong, type);
5946                  }
5947 mark.hamzy  1.35 
5948 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
5949                        (JNIEnv *jEnv, jobject jThs, jlong jP, jlong jDt)
5950                  {
5951                     CIMProperty  *cp       = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5952                     _dataType    *dt       = DEBUG_ConvertJavaToC (jlong, _dataType*, jDt);
5953                     CIMValue      val;
5954                     bool          fSuccess = false;
5955                     CIMType       cType    = CIMTYPE_BOOLEAN;
5956 mark.hamzy  1.35 
5957 mark.hamzy  1.62    cType = _dataType::convertJavaTypeToCType (dt->_type, &fSuccess);
5958 mark.hamzy  1.35 
5959 mark.hamzy  1.62    if (fSuccess)
5960                     {
5961                        val.setNullValue (cType, dt->_array);
5962 mark.hamzy  1.35 
5963 mark.hamzy  1.62       CIMProperty *np = new CIMProperty (cp->getName (), val);
5964 mark.hamzy  1.35 
5965 mark.hamzy  1.62       delete cp;
5966 mark.hamzy  1.35 
5967 mark.hamzy  1.62       DEBUG_ConvertCleanup (jlong, jP);
5968 mark.hamzy  1.35 
5969 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMProperty*, jlong, np);
5970                     }
5971                     else
5972                     {
5973                        return DEBUG_ConvertCToJava (CIMProperty*, jlong, cp);
5974                     }
5975                  }
5976 mark.hamzy  1.35 
5977 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
5978                        (JNIEnv *jEnv, jobject jThs, jlong jP,jlong jV)
5979                  {
5980                     CIMProperty *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5981                     CIMValue    *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
5982 mark.hamzy  1.35 
5983 mark.hamzy  1.62    cp->setValue (*cv);
5984                  }
5985 mark.hamzy  1.35 
5986 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
5987                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5988                  {
5989                     CIMProperty *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5990 mark.hamzy  1.35 
5991 mark.hamzy  1.62    return (jboolean)cp->isArray ();
5992 schuur      1.1  }
5993                  
5994 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
5995                        (JNIEnv *jEnv, jobject jThs, jlong jP)
5996 mark.hamzy  1.20 {
5997 mark.hamzy  1.62    CIMProperty  *cp  = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
5998                     const String &n   = cp->getName ().getString ();
5999                     jstring       str = jEnv->NewStringUTF (n.getCString ());
6000 mark.hamzy  1.20 
6001 mark.hamzy  1.62    return str;
6002 schuur      1.1  }
6003                  
6004 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
6005                        (JNIEnv *jEnv, jobject jThs, jlong jP, jlong jV)
6006 mark.hamzy  1.44 {
6007 mark.hamzy  1.62    CIMProperty *cp   = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
6008                     CIMValue    *cvin = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
6009                     CIMValue     cv   = cp->getValue ();
6010 schuur      1.1  
6011 mark.hamzy  1.62    if (cvin->isNull ())
6012                        throwCIMException (jEnv,"+++ null cvin value ");
6013                     if (!cv.isArray ())
6014                        throwCIMException (jEnv,"+++ not an array ");
6015                     if (cvin->getType ()!= cv.getType ())
6016                        throwCIMException (jEnv,"+++ type mismatch ");
6017 schuur      1.1  
6018 mark.hamzy  1.62    CIMType type = cv.getType ();
6019 schuur      1.1  
6020 mark.hamzy  1.62    switch (type)
6021                     {
6022                     case CIMTYPE_BOOLEAN:
6023                     {
6024                           Boolean bo;
6025                           cvin->get (bo);
6026                           Array<Boolean> boarr;
6027                           cv.get (boarr);
6028                           boarr.append (bo);
6029                           cv.set (boarr);
6030                           break;
6031                     }
6032                     case CIMTYPE_UINT8:
6033                     {
6034                           Uint8 u8;
6035                           cvin->get (u8);
6036                           Array<Uint8> u8arr;
6037                           cv.get (u8arr);
6038                           u8arr.append (u8);
6039                           cv.set (u8arr);
6040                           break;
6041 mark.hamzy  1.62    }
6042                     case CIMTYPE_SINT8:
6043                     {
6044                           Sint8 s8;
6045                           cvin->get (s8);
6046                           Array<Sint8> s8arr;
6047                           cv.get (s8arr);
6048                           s8arr.append (s8);
6049                           cv.set (s8arr);
6050                           break;
6051                     }
6052                     case CIMTYPE_UINT16:
6053                     {
6054                           Uint16 u16;
6055                           cvin->get (u16);
6056                           Array<Uint16> u16arr;
6057                           cv.get (u16arr);
6058                           u16arr.append (u16);
6059                           cv.set (u16arr);
6060                           break;
6061                     }
6062 mark.hamzy  1.62    case CIMTYPE_SINT16:
6063                     {
6064                           Sint16 s16;
6065                           cvin->get (s16);
6066                           Array<Sint16> s16arr;
6067                           cv.get (s16arr);
6068                           s16arr.append (s16);
6069                           cv.set (s16arr);
6070                           break;
6071                     }
6072                     case CIMTYPE_UINT32:
6073                     {
6074                           Uint32 u32;
6075                           cvin->get (u32);
6076                           Array<Uint32> u32arr;
6077                           cv.get (u32arr);
6078                           u32arr.append (u32);
6079                           cv.set (u32arr);
6080                           break;
6081                     }
6082                     case CIMTYPE_SINT32:
6083 mark.hamzy  1.62    {
6084                           Sint32 s32;
6085                           cvin->get (s32);
6086                           Array<Sint32> s32arr;
6087                           cv.get (s32arr);
6088                           s32arr.append (s32);
6089                           cv.set (s32arr);
6090                           break;
6091                     }
6092                     case CIMTYPE_UINT64:
6093                     {
6094                           Uint64 u64;
6095                           cvin->get (u64);
6096                           Array<Uint64> u64arr;
6097                           cv.get (u64arr);
6098                           u64arr.append (u64);
6099                           cv.set (u64arr);
6100                           break;
6101                     }
6102                     case CIMTYPE_SINT64:
6103                     {
6104 mark.hamzy  1.62          Sint64 s64;
6105                           cvin->get (s64);
6106                           Array<Sint64> s64arr;
6107                           cv.get (s64arr);
6108                           s64arr.append (s64);
6109                           cv.set (s64arr);
6110                           break;
6111                     }
6112                     case CIMTYPE_REAL32:
6113                     {
6114                           Real32 f;
6115                           cvin->get (f);
6116                           Array<Real32> farr;
6117                           cv.get (farr);
6118                           farr.append (f);
6119                           cv.set (farr);
6120                           break;
6121                     }
6122                     case CIMTYPE_REAL64:
6123                     {
6124                           Real64 d;
6125 mark.hamzy  1.62          cvin->get (d);
6126                           Array<Real64> darr;
6127                           cv.get (darr);
6128                           darr.append (d);
6129                           cv.set (darr);
6130                           break;
6131                     }
6132                     case CIMTYPE_CHAR16:
6133                     {
6134                           Char16 c16;
6135                           cvin->get (c16);
6136                           Array<Char16> c16arr;
6137                           cv.get (c16arr);
6138                           c16arr.append (c16);
6139                           cv.set (c16arr);
6140                           break;
6141                     }
6142                     case CIMTYPE_STRING:
6143                     {
6144                           String str;
6145                           cvin->get (str);
6146 mark.hamzy  1.62          Array<String> strarr;
6147                           cv.get (strarr);
6148                           strarr.append (str);
6149                           cv.set (strarr);
6150                           break;
6151                     }
6152                     case CIMTYPE_DATETIME:
6153                     {
6154                           CIMDateTime dt;
6155                           cvin->get (dt);
6156                           Array<CIMDateTime> dtarr;
6157                           cv.get (dtarr);
6158                           dtarr.append (dt);
6159                           cv.set (dtarr);
6160                           break;
6161                     }
6162                     case CIMTYPE_REFERENCE:
6163                     {
6164                           CIMObjectPath ref;
6165                           cvin->get (ref);
6166                           Array<CIMObjectPath> refarr;
6167 mark.hamzy  1.62          cv.get (refarr);
6168                           refarr.append (ref);
6169                           cv.set (refarr);
6170                           break;
6171                     }
6172                     case CIMTYPE_OBJECT:
6173                     {
6174                           CIMObject obj;
6175                           cvin->get (obj);
6176                           Array<CIMObject> objarr;
6177                           cv.get (objarr);
6178                           objarr.append (obj);
6179                           cv.set (objarr);
6180                           break;
6181                     }
6182                     default:
6183 mark.hamzy  1.44    {
6184 mark.hamzy  1.62       throwCIMException (jEnv,"+++ unsupported type ");
6185 schuur      1.1     }
6186                     }
6187 mark.hamzy  1.56 
6188 mark.hamzy  1.62    cp->setValue (cv);
6189 schuur      1.1  }
6190                  
6191 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
6192                        (JNIEnv *jEnv, jobject jThs, jlong jP, jlong jQ)
6193 mark.hamzy  1.44 {
6194 mark.hamzy  1.62    CIMProperty  *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
6195                     CIMQualifier *cq = DEBUG_ConvertJavaToC (jlong, CIMQualifier*, jQ);
6196 schuur      1.1  
6197 mark.hamzy  1.62    cp->addQualifier (*cq);
6198 schuur      1.1  }
6199                  
6200 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
6201                        (JNIEnv *jEnv, jobject jThs, jlong jP)
6202 mark.hamzy  1.20 {
6203 mark.hamzy  1.62    CIMProperty *cp = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
6204 schuur      1.1  
6205 mark.hamzy  1.62    delete cp;
6206 mark.hamzy  1.20 
6207 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jP);
6208 schuur      1.1  }
6209                  
6210 mark.hamzy  1.62 /*
6211                   * Class:     org_pegasus_jmpi_CIMProperty
6212                   * Method:    _findQualifier
6213                   * Signature: (Ljava/lang/String;)I
6214                   */
6215                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1findQualifier
6216                    (JNIEnv *jEnv, jobject jThs, jlong jP, jstring jQualifier)
6217 mark.hamzy  1.20 {
6218 mark.hamzy  1.62    CIMProperty  *cp    = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
6219                     const char   *str   = jEnv->GetStringUTFChars (jQualifier, NULL);
6220                     Uint32        index = PEG_NOT_FOUND;
6221 mark.hamzy  1.20 
6222 mark.hamzy  1.62    try
6223                     {
6224                        index = cp->findQualifier (CIMName (str));
6225 mark.hamzy  1.20 
6226 mark.hamzy  1.62       jEnv->ReleaseStringUTFChars (jQualifier, str);
6227                     }
6228                     Catch (jEnv);
6229 schuur      1.1  
6230 mark.hamzy  1.62    return index;
6231 schuur      1.1  }
6232                  
6233 mark.hamzy  1.62 /*
6234                   * Class:     org_pegasus_jmpi_CIMProperty
6235                   * Method:    _getQualifier
6236                   * Signature: (I)I
6237                   */
6238                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMProperty__1getQualifier
6239                    (JNIEnv *jEnv, jobject jThs, jlong jP, jint jIndex)
6240 mark.hamzy  1.20 {
6241 mark.hamzy  1.62    CIMProperty  *cp        = DEBUG_ConvertJavaToC (jlong, CIMProperty*, jP);
6242                     CIMQualifier *cq        = NULL;
6243                     CIMQualifier  qualifier;
6244 mark.hamzy  1.20 
6245 mark.hamzy  1.62    try
6246                     {
6247                        qualifier = cp->getQualifier ((Uint32)jIndex);
6248                        cq = new CIMQualifier (qualifier);
6249                     }
6250                     Catch (jEnv);
6251 schuur      1.1  
6252 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMQualifier *, jlong, cq);
6253 schuur      1.1  }
6254                  
6255 mark.hamzy  1.22 
6256 schuur      1.1  // -------------------------------------
6257                  // ---
6258 mark.hamzy  1.62 // -     CIMQualifier
6259 schuur      1.1  // ---
6260                  // -------------------------------------
6261                  
6262 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
6263                        (JNIEnv *jEnv, jobject jThs, jstring jN)
6264 mark.hamzy  1.20 {
6265 mark.hamzy  1.62    const char   *str  = jEnv->GetStringUTFChars (jN,NULL);
6266                     CIMQualifier *qual = new CIMQualifier (CIMName (str),CIMValue ());
6267 mark.hamzy  1.20 
6268 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN,str);
6269 schuur      1.4  
6270 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMQualifier*, jlong, qual);
6271 schuur      1.4  }
6272                  
6273 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
6274                        (JNIEnv *jEnv, jobject jThs, jlong jQ)
6275 mark.hamzy  1.20 {
6276 mark.hamzy  1.62    CIMQualifier *cq  = DEBUG_ConvertJavaToC (jlong, CIMQualifier*, jQ);
6277                     const String &n   = cq->getName ().getString ();
6278                     jstring       str = jEnv->NewStringUTF (n.getCString ());
6279 mark.hamzy  1.20 
6280 mark.hamzy  1.62    return str;
6281 schuur      1.1  }
6282                  
6283 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
6284                        (JNIEnv *jEnv, jobject jThs, jlong jQ)
6285 mark.hamzy  1.20 {
6286 mark.hamzy  1.62    CIMQualifier *cq = DEBUG_ConvertJavaToC (jlong, CIMQualifier*, jQ);
6287                     CIMValue     *cv = new CIMValue (cq->getValue ());
6288 mark.hamzy  1.20 
6289 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6290 schuur      1.1  }
6291                  
6292 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
6293                        (JNIEnv *jEnv, jobject jThs, jlong jQ,jlong jV)
6294 mark.hamzy  1.20 {
6295 mark.hamzy  1.62    CIMQualifier *cq = DEBUG_ConvertJavaToC (jlong, CIMQualifier*, jQ);
6296                     CIMValue     *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
6297 schuur      1.1  
6298 mark.hamzy  1.62    cq->setValue (*cv);
6299 schuur      1.1  }
6300                  
6301 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
6302                        (JNIEnv *jEnv, jobject jThs, jlong jQ)
6303 mark.hamzy  1.20 {
6304 mark.hamzy  1.62    CIMQualifier *cq = DEBUG_ConvertJavaToC (jlong, CIMQualifier*, jQ);
6305 mark.hamzy  1.20 
6306 mark.hamzy  1.62    delete cq;
6307 schuur      1.1  
6308 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jQ);
6309 schuur      1.5  }
6310                  
6311                  
6312 schuur      1.1  // -------------------------------------
6313                  // ---
6314 mark.hamzy  1.62 // -     CIMQualifierType
6315 schuur      1.1  // ---
6316                  // -------------------------------------
6317                  
6318 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
6319                        (JNIEnv *jEnv, jobject jThs)
6320 mark.hamzy  1.44 {
6321 mark.hamzy  1.62    CIMQualifierDecl *qual = new CIMQualifierDecl ();
6322 mark.hamzy  1.30 
6323 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, qual);
6324 schuur      1.5  }
6325                  
6326 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
6327                        (JNIEnv *jEnv, jobject jThs, jlong jQ)
6328 mark.hamzy  1.20 {
6329 mark.hamzy  1.62    CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ);
6330                     const String     &n   = qt->getName ().getString ();
6331                     jstring           str = jEnv->NewStringUTF (n.getCString ());
6332 schuur      1.5  
6333 mark.hamzy  1.62    return str;
6334 schuur      1.1  }
6335                  
6336 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
6337                        (JNIEnv *jEnv, jobject jThs, jlong jQ, jstring jN)
6338 mark.hamzy  1.20 {
6339 mark.hamzy  1.62    CIMQualifierDecl *qt   = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ);
6340                     const char       *str  = jEnv->GetStringUTFChars (jN, NULL);
6341                     jlong             jret = 0;
6342 mark.hamzy  1.54 
6343 mark.hamzy  1.62    if (qt->isUninitialized ())
6344 mark.hamzy  1.54    {
6345 marek       1.78       CIMQualifierDecl *nqt = new CIMQualifierDecl(
6346                                                        CIMName(str),
6347                                                        CIMValue(),
6348                                                        CIMScope());
6349 mark.hamzy  1.54 
6350 mark.hamzy  1.62       jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, nqt);
6351                     }
6352                     else
6353                     {
6354                        qt->setName (CIMName (str));
6355 mark.hamzy  1.20 
6356 mark.hamzy  1.62       CIMQualifierDecl *nqt = new CIMQualifierDecl (*qt);
6357 mark.hamzy  1.54 
6358 mark.hamzy  1.62       jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, nqt);
6359 schuur      1.1     }
6360 mark.hamzy  1.20 
6361 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jN, str);
6362                  
6363                     return jret;
6364 schuur      1.1  }
6365 schuur      1.3  
6366 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
6367                        (JNIEnv *jEnv, jobject jThs, jlong jQ,jlong jV)
6368 mark.hamzy  1.20 {
6369 mark.hamzy  1.62    CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ);
6370                     CIMValue         *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
6371 mark.hamzy  1.20 
6372 mark.hamzy  1.62    qt->setValue (*cv);
6373 schuur      1.3  }
6374                  
6375 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
6376                        (JNIEnv *jEnv, jobject jThs, jlong jQ)
6377 mark.hamzy  1.20 {
6378 mark.hamzy  1.62    CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ);
6379                  
6380                     delete qt;
6381 schuur      1.3  
6382 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jQ);
6383 schuur      1.3  }
6384                  
6385 mark.hamzy  1.62 // -------------------------------------
6386                  // ---
6387 marek       1.78 // -        CIMValue
6388 mark.hamzy  1.62 // ---
6389                  // -------------------------------------
6390                  
6391                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
6392                        (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned)
6393 mark.hamzy  1.20 {
6394 mark.hamzy  1.62    CIMValue *cv = NULL;
6395 schuur      1.3  
6396 mark.hamzy  1.62    if (notSigned)
6397                        cv = new CIMValue ((Uint8)jb);
6398                     else
6399                        cv = new CIMValue ((Sint8)jb);
6400 mark.hamzy  1.56 
6401 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6402 schuur      1.1  }
6403 schuur      1.3  
6404 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1short
6405                        (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned)
6406 mark.hamzy  1.20 {
6407 mark.hamzy  1.62    CIMValue *cv = NULL;
6408                  
6409                     if (notSigned)
6410                        cv = new CIMValue ((Uint16)js);
6411                     else
6412                        cv = new CIMValue( (Sint16)js);
6413 mark.hamzy  1.20 
6414 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6415                  }
6416 mark.hamzy  1.56 
6417 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1makeInt
6418                        (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned)
6419                  {
6420                     CIMValue *cv = NULL;
6421 mark.hamzy  1.56 
6422 mark.hamzy  1.62    if (notSigned)
6423                        cv = new CIMValue ((Uint32)ji);
6424                     else
6425                        cv = new CIMValue ((Sint32)ji);
6426 mark.hamzy  1.20 
6427 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6428 schuur      1.1  }
6429                  
6430 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1long
6431                        (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned)
6432 mark.hamzy  1.20 {
6433 mark.hamzy  1.62    CIMValue *cv = NULL;
6434 mark.hamzy  1.20 
6435 mark.hamzy  1.62    if (notSigned)
6436                        cv = new CIMValue ((Uint64)jl);
6437                     else
6438                        cv = new CIMValue ((Sint64)jl);
6439 mark.hamzy  1.56 
6440 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6441                  }
6442 mark.hamzy  1.56 
6443 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1string
6444                        (JNIEnv *jEnv, jobject jThs, jstring jS)
6445                  {
6446                     const char *str = jEnv->GetStringUTFChars (jS,NULL);
6447                     CIMValue   *cv  = new CIMValue (String (str));
6448 mark.hamzy  1.56 
6449 mark.hamzy  1.62    jEnv->ReleaseStringUTFChars (jS,str);
6450 mark.hamzy  1.20 
6451 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6452 schuur      1.3  }
6453                  
6454 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
6455                        (JNIEnv *jEnv, jobject jThs, jboolean jB)
6456 mark.hamzy  1.20 {
6457 mark.hamzy  1.62    CIMValue *cv = new CIMValue ((Boolean)jB);
6458                  
6459                     return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6460                  }
6461 mark.hamzy  1.20 
6462 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1float
6463                        (JNIEnv *jEnv, jobject jThs, jfloat jF)
6464                  {
6465                     CIMValue *cv = new CIMValue (jF);
6466 mark.hamzy  1.24 
6467 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6468                  }
6469 mark.hamzy  1.24 
6470 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1double
6471                        (JNIEnv *jEnv, jobject jThs, jdouble jD)
6472                  {
6473                     CIMValue *cv = new CIMValue (jD);
6474 mark.hamzy  1.20 
6475 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6476 schuur      1.6  }
6477                  
6478 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1cop
6479                        (JNIEnv *jEnv, jobject jThs, jlong jR)
6480 mark.hamzy  1.20 {
6481 mark.hamzy  1.62    CIMObjectPath *ref = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jR);
6482                     CIMValue      *cv  = new CIMValue (*ref);
6483 schuur      1.5  
6484 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6485                  }
6486 mark.hamzy  1.24 
6487 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
6488                        (JNIEnv *jEnv, jobject jThs, jlong jDT)
6489                  {
6490                     CIMDateTime *dt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jDT);
6491                     CIMValue    *cv = new CIMValue (*dt);
6492 mark.hamzy  1.56 
6493 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6494                  }
6495 mark.hamzy  1.24 
6496 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1char16
6497                        (JNIEnv *jEnv, jobject jThs, jchar jChar16)
6498                  {
6499                     Char16       c16 (jChar16);
6500                     CIMValue    *cv  = new CIMValue (c16);
6501 mark.hamzy  1.20 
6502 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6503 schuur      1.1  }
6504                  
6505 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1object
6506                        (JNIEnv *jEnv, jobject jThs, jlong jO)
6507 mark.hamzy  1.20 {
6508 mark.hamzy  1.62    CIMObject *co = DEBUG_ConvertJavaToC (jlong, CIMObject*, jO);
6509                     CIMValue  *cv = new CIMValue (*co);
6510 mark.hamzy  1.20 
6511 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6512 schuur      1.3  }
6513                  
6514 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
6515                        (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned)
6516 mark.hamzy  1.20 {
6517 mark.hamzy  1.62    CIMValue *cv  = NULL;
6518                     jboolean  b;
6519                     jsize     len = jEnv->GetArrayLength (jshortA);
6520                     jshort   *jsA = jEnv->GetShortArrayElements (jshortA, &b);
6521                  
6522                     if (notSigned)
6523                     {
6524                        Array<Uint8> u8;
6525 mark.hamzy  1.20 
6526 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6527                           u8.append ((Uint8)jsA[i]);
6528 mark.hamzy  1.56 
6529 mark.hamzy  1.62       cv = new CIMValue (u8);
6530                     }
6531                     else
6532                     {
6533                        Array<Sint8> s8;
6534 mark.hamzy  1.56 
6535 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6536                           s8.append ((Sint8)jsA[i]);
6537 mark.hamzy  1.56 
6538 mark.hamzy  1.62       cv = new CIMValue (s8);
6539 schuur      1.1     }
6540 mark.hamzy  1.20 
6541 s.kodali    1.82    jEnv->ReleaseShortArrayElements (jshortA, jsA, 0);
6542 mark.hamzy  1.62 
6543                     return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6544 schuur      1.1  }
6545 schuur      1.3  
6546 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
6547                        (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned)
6548 mark.hamzy  1.20 {
6549 mark.hamzy  1.62    CIMValue *cv  = NULL;
6550                     jboolean  b;
6551                     jsize     len = jEnv->GetArrayLength (jintA);
6552                     jint     *jiA = jEnv->GetIntArrayElements (jintA, &b);
6553 mark.hamzy  1.20 
6554 mark.hamzy  1.62    if (notSigned)
6555                     {
6556                        Array<Uint16> u16;
6557 mark.hamzy  1.56 
6558 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6559                           u16.append ((Uint16)jiA[i]);
6560 mark.hamzy  1.56 
6561 mark.hamzy  1.62       cv = new CIMValue (u16);
6562 schuur      1.1     }
6563 mark.hamzy  1.62    else
6564                     {
6565                        Array<Sint16> s16;
6566 schuur      1.3  
6567 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6568                           s16.append ((Sint16)jiA[i]);
6569 mark.hamzy  1.20 
6570 mark.hamzy  1.62       cv = new CIMValue (s16);
6571                     }
6572 mark.hamzy  1.56 
6573 s.kodali    1.82    jEnv->ReleaseIntArrayElements (jintA, jiA, 0);
6574 mark.hamzy  1.56 
6575 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6576 schuur      1.3  }
6577                  
6578 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
6579                        (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
6580 mark.hamzy  1.20 {
6581 mark.hamzy  1.62    CIMValue *cv  = NULL;
6582                     jboolean  b;
6583                     jsize     len = jEnv->GetArrayLength (jlongA);
6584                     jlong    *jlA = jEnv->GetLongArrayElements (jlongA, &b);
6585                  
6586                     if (notSigned)
6587                     {
6588                        Array<Uint32> u32;
6589                  
6590                        for (jsize i = 0; i < len; i++)
6591                           u32.append ((Uint32)jlA[i]);
6592 mark.hamzy  1.20 
6593 mark.hamzy  1.62       cv = new CIMValue (u32);
6594                     }
6595                     else
6596                     {
6597                        Array<Sint32> s32;
6598 mark.hamzy  1.56 
6599 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6600                           s32.append ((Sint32)jlA[i]);
6601 mark.hamzy  1.56 
6602 mark.hamzy  1.62       cv = new CIMValue (s32);
6603 schuur      1.3     }
6604 mark.hamzy  1.20 
6605 s.kodali    1.82    jEnv->ReleaseLongArrayElements (jlongA, jlA, 0);
6606 mark.hamzy  1.62 
6607                     return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6608 schuur      1.5  }
6609                  
6610 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
6611                        (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
6612 mark.hamzy  1.20 {
6613 mark.hamzy  1.62    CIMValue *cv  = NULL;
6614                     jboolean  b;
6615                     jsize     len = jEnv->GetArrayLength (jlongA);
6616                     jlong    *jlA = jEnv->GetLongArrayElements (jlongA, &b);
6617 mark.hamzy  1.20 
6618 mark.hamzy  1.62    if (notSigned)
6619                     {
6620                        Array<Uint64> u64;
6621 mark.hamzy  1.56 
6622 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6623                           u64.append ((Uint64)jlA[i]);
6624 mark.hamzy  1.56 
6625 mark.hamzy  1.62       cv = new CIMValue (u64);
6626 schuur      1.3     }
6627 mark.hamzy  1.62    else
6628                     {
6629                        Array<Sint64> s64;
6630 mark.hamzy  1.20 
6631 mark.hamzy  1.62       for (jsize i = 0; i < len; i++)
6632                           s64.append ((Sint64)jlA[i]);
6633 schuur      1.3  
6634 mark.hamzy  1.62       cv = new CIMValue (s64);
6635                     }
6636 mark.hamzy  1.20 
6637 s.kodali    1.82    jEnv->ReleaseLongArrayElements (jlongA, jlA, 0);
6638 mark.hamzy  1.56 
6639 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6640 schuur      1.5  }
6641                  
6642 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
6643                        (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA)
6644 mark.hamzy  1.20 {
6645 mark.hamzy  1.62    CIMValue     *cv   = NULL;
6646                     jsize         len  = jEnv->GetArrayLength (jstringA);
6647                     Array<String> strA;
6648                  
6649                     for (jsize i = 0;i < len; i++)
6650                     {
6651                        jstring     jsA = (jstring)jEnv->GetObjectArrayElement (jstringA, i);
6652                        const char *str = jEnv->GetStringUTFChars (jsA, NULL);
6653 mark.hamzy  1.20 
6654 mark.hamzy  1.62       strA.append (String (str));
6655 mark.hamzy  1.56 
6656 mark.hamzy  1.62       jEnv->ReleaseStringUTFChars (jsA, str);
6657 schuur      1.5     }
6658 mark.hamzy  1.62 
6659                     cv = new CIMValue (strA);
6660                  
6661                     return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6662 schuur      1.5  }
6663                  
6664 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
6665                        (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA)
6666 mark.hamzy  1.20 {
6667 mark.hamzy  1.62    CIMValue       *cv  = NULL;
6668                     jboolean        b;
6669                     jsize           len = jEnv->GetArrayLength (jboolA);
6670                     jboolean       *jbA = jEnv->GetBooleanArrayElements (jboolA, &b);
6671                     Array<Boolean>  bA;
6672 mark.hamzy  1.20 
6673 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6674                        bA.append ((Boolean)jbA[i]);
6675 mark.hamzy  1.27 
6676 mark.hamzy  1.62    cv = new CIMValue (bA);
6677 mark.hamzy  1.27 
6678 s.kodali    1.82    jEnv->ReleaseBooleanArrayElements (jboolA, jbA, 0);
6679 mark.hamzy  1.20 
6680 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6681 schuur      1.3  }
6682 schuur      1.5  
6683 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1floatArray
6684                    (JNIEnv *jEnv, jobject jThs, jfloatArray jfloatA)
6685 mark.hamzy  1.20 {
6686 mark.hamzy  1.62    CIMValue     *cv  = NULL;
6687                     jboolean      b;
6688                     jsize         len = jEnv->GetArrayLength (jfloatA);
6689                     jfloat       *jfA = jEnv->GetFloatArrayElements (jfloatA, &b);
6690                     Array<float>  fA;
6691                  
6692                     for (jsize i = 0; i< len; i++)
6693                        fA.append ((float)jfA[i]);
6694 mark.hamzy  1.20 
6695 mark.hamzy  1.62    cv = new CIMValue (fA);
6696 mark.hamzy  1.56 
6697 s.kodali    1.82    jEnv->ReleaseFloatArrayElements (jfloatA, jfA, 0);
6698 mark.hamzy  1.27 
6699 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6700 schuur      1.3  }
6701                  
6702 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1doubleArray
6703                    (JNIEnv *jEnv, jobject jThs, jdoubleArray jdoubleA)
6704 mark.hamzy  1.20 {
6705 mark.hamzy  1.62    CIMValue      *cv  = NULL;
6706                     jboolean       b;
6707                     jsize          len = jEnv->GetArrayLength (jdoubleA);
6708                     jdouble       *jdA = jEnv->GetDoubleArrayElements (jdoubleA, &b);
6709                     Array<double>  dA;
6710 mark.hamzy  1.30 
6711 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6712                        dA.append ((double)jdA[i]);
6713 mark.hamzy  1.20 
6714 mark.hamzy  1.62    cv = new CIMValue (dA);
6715 mark.hamzy  1.56 
6716 s.kodali    1.82    jEnv->ReleaseDoubleArrayElements (jdoubleA, jdA, 0);
6717 mark.hamzy  1.20 
6718 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6719                  }
6720 mark.hamzy  1.20 
6721 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1copArray
6722                        (JNIEnv *jEnv, jobject jThs, jlongArray jlongA)
6723                  {
6724                     CIMValue             *cv  = NULL;
6725                     jboolean              b;
6726                     jsize                 len = jEnv->GetArrayLength (jlongA);
6727                     jlong                *jiA = jEnv->GetLongArrayElements (jlongA, &b);
6728                     Array<CIMObjectPath>  cA;
6729 mark.hamzy  1.20 
6730 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6731                     {
6732                        CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jiA[i]);
6733                        cA.append (*cop);
6734 schuur      1.3     }
6735 mark.hamzy  1.27 
6736 mark.hamzy  1.62    cv = new CIMValue (cA);
6737 mark.hamzy  1.27 
6738 s.kodali    1.82    jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
6739 schuur      1.3  
6740 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6741                  }
6742 mark.hamzy  1.20 
6743 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1datetimeArray
6744                        (JNIEnv *jEnv, jobject jThs, jlongArray jlongA)
6745                  {
6746                     CIMValue           *cv  = NULL;
6747                     jboolean            b;
6748                     jsize               len = jEnv->GetArrayLength (jlongA);
6749                     jlong              *jiA = jEnv->GetLongArrayElements (jlongA, &b);
6750                     Array<CIMDateTime>  cA;
6751 mark.hamzy  1.27 
6752 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6753                     {
6754                        CIMDateTime *cdt = DEBUG_ConvertJavaToC (jlong, CIMDateTime*, jiA[i]);
6755                        cA.append (*cdt);
6756 mark.hamzy  1.20    }
6757                  
6758 mark.hamzy  1.62    cv = new CIMValue (cA);
6759                  
6760 s.kodali    1.82    jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
6761 mark.hamzy  1.27 
6762 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6763 schuur      1.3  }
6764                  
6765 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1objectArray
6766                        (JNIEnv *jEnv, jobject jThs, jlongArray jlongA)
6767 mark.hamzy  1.20 {
6768 mark.hamzy  1.62    CIMValue           *cv  = NULL;
6769                     jboolean            b;
6770                     jsize               len = jEnv->GetArrayLength (jlongA);
6771                     jlong              *jiA = jEnv->GetLongArrayElements (jlongA, &b);
6772                     Array<CIMObject>    cA;
6773 mark.hamzy  1.30 
6774 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6775 mark.hamzy  1.43    {
6776 mark.hamzy  1.62       CIMObject *co = DEBUG_ConvertJavaToC (jlong, CIMObject*, jiA[i]);
6777                        cA.append (*co);
6778                     }
6779 mark.hamzy  1.20 
6780 mark.hamzy  1.62    cv = new CIMValue (cA);
6781 mark.hamzy  1.56 
6782 s.kodali    1.82    jEnv->ReleaseLongArrayElements (jlongA, jiA, 0);
6783 mark.hamzy  1.20 
6784 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6785                  }
6786 mark.hamzy  1.20 
6787 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMValue__1char16Array
6788                        (JNIEnv *jEnv, jobject jThs, jcharArray jcharA)
6789                  {
6790                     CIMValue      *cv  = NULL;
6791                     jboolean       b;
6792                     jsize          len = jEnv->GetArrayLength (jcharA);
6793                     jchar         *jcA = jEnv->GetCharArrayElements (jcharA, &b);
6794                     Array<Char16>  cA;
6795 mark.hamzy  1.20 
6796 mark.hamzy  1.62    for (jsize i = 0; i < len; i++)
6797                        cA.append (Char16 (jcA[i]));
6798 mark.hamzy  1.56 
6799 mark.hamzy  1.62    cv = new CIMValue (cA);
6800 schuur      1.7  
6801 s.kodali    1.82    jEnv->ReleaseCharArrayElements (jcharA, jcA, 0);
6802 mark.hamzy  1.43 
6803 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMValue*, jlong, cv);
6804 schuur      1.6  }
6805                  
6806 mark.hamzy  1.62 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
6807                        (JNIEnv *jEnv, jobject jThs, jlong jV)
6808 mark.hamzy  1.20 {
6809 mark.hamzy  1.62    JMPIjvm::cacheIDs (jEnv);
6810 schuur      1.3  
6811 mark.hamzy  1.62    CIMValue *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
6812 mark.hamzy  1.16 
6813 mark.hamzy  1.62    if (cv->isNull ())
6814                        return NULL;
6815 mark.hamzy  1.16 
6816 mark.hamzy  1.62    CIMType type = cv->getType ();
6817 mark.hamzy  1.27 
6818 mark.hamzy  1.62    if (!cv->isArray ())
6819                     {
6820                        switch (type)
6821                        {
6822                        case CIMTYPE_BOOLEAN:
6823                        {
6824                           Boolean bo;
6825                           cv->get (bo);
6826                           return jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,
6827                                                   JMPIjvm::jv.BooleanNewZ,
6828                                                   (jboolean)bo);
6829                        }
6830                        case CIMTYPE_SINT8:
6831                        {
6832                           Sint8 s8;
6833                           cv->get (s8);
6834                           return jEnv->NewObject (JMPIjvm::jv.ByteClassRef,
6835                                                   JMPIjvm::jv.ByteNewB,
6836                                                   (jbyte)s8);
6837                        }
6838                        case CIMTYPE_UINT8:
6839 mark.hamzy  1.62       {
6840                           Uint8 u8;
6841                           cv->get (u8);
6842                           return jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,
6843                                                   JMPIjvm::jv.UnsignedInt8NewS,
6844                                                   (jshort)u8);
6845                        }
6846                        case CIMTYPE_SINT16:
6847                        {
6848                           Sint16 s16;
6849                           cv->get (s16);
6850                           return jEnv->NewObject (JMPIjvm::jv.ShortClassRef,
6851                                                   JMPIjvm::jv.ShortNewS,
6852                                                   (jshort)s16);
6853                        }
6854                        case CIMTYPE_UINT16:
6855                        {
6856                           Uint16 u16;
6857                           cv->get (u16);
6858                           return jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,
6859                                                   JMPIjvm::jv.UnsignedInt16NewI,
6860 mark.hamzy  1.62                                  (jint)u16);
6861                        }
6862                        case CIMTYPE_SINT32:
6863                        {
6864                           Sint32 s32;
6865                           cv->get (s32);
6866                           return jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,
6867                                                   JMPIjvm::jv.IntegerNewI,
6868                                                   (jint)s32);
6869                        }
6870                        case CIMTYPE_UINT32:
6871                        {
6872                           Uint32 u32;
6873                           cv->get (u32);
6874                           return jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,
6875                                                   JMPIjvm::jv.UnsignedInt32NewJ,
6876                                                   (jlong)u32);
6877                        }
6878                        case CIMTYPE_SINT64:
6879                        {
6880                           Sint64 s64;
6881 mark.hamzy  1.62          cv->get (s64);
6882                           return jEnv->NewObject (JMPIjvm::jv.LongClassRef,
6883                                                   JMPIjvm::jv.LongNewJ,
6884                                                   (jlong)s64);
6885                        }
6886                        case CIMTYPE_UINT64:
6887                        {
6888                           Uint64 u64;
6889 mark.hamzy  1.56 
6890 mark.hamzy  1.62          cv->get (u64);
6891 mark.hamzy  1.56 
6892 mark.hamzy  1.62          std::ostringstream oss;
6893                           jstring            jString = 0;
6894                           jobject            jBIG    = 0;
6895 mark.hamzy  1.20 
6896 mark.hamzy  1.62          oss << u64 << ends;
6897 schuur      1.3  
6898 mark.hamzy  1.62          jString = jEnv->NewStringUTF (oss.str ().c_str ());
6899 mark.hamzy  1.44 
6900 mark.hamzy  1.62          if (jString)
6901                           {
6902                              jBIG = jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
6903                                                      JMPIjvm::jv.UnsignedInt64NewStr,
6904                                                      jString);
6905                           }
6906 mark.hamzy  1.44 
6907 mark.hamzy  1.62          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
6908                                                   JMPIjvm::jv.UnsignedInt64NewBi,
6909                                                   jBIG);
6910                        }
6911                        case CIMTYPE_REAL32:
6912                        {
6913                           float f;
6914                           cv->get (f);
6915                           return jEnv->NewObject (JMPIjvm::jv.FloatClassRef,
6916                                                   JMPIjvm::jv.FloatNewF,
6917                                                   (jfloat)f);
6918                        }
6919                        case CIMTYPE_REAL64:
6920                        {
6921                           double d;
6922                           cv->get (d);
6923                           return jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,
6924                                                   JMPIjvm::jv.DoubleNewD,
6925                                                   (jdouble)d);
6926                        }
6927                        case CIMTYPE_STRING:
6928 mark.hamzy  1.62       {
6929                           String s;
6930                           cv->get (s);
6931                           return jEnv->NewStringUTF (s.getCString ());
6932                        }
6933                        case CIMTYPE_REFERENCE:
6934                        {
6935                           CIMObjectPath ref;
6936                           cv->get (ref);
6937 marek       1.78          jlong jOp = DEBUG_ConvertCToJava(
6938                                           CIMObjectPath*,
6939                                           jlong,
6940                                           new CIMObjectPath (ref));
6941                           return jEnv->NewObject(
6942                                            JMPIjvm::jv.CIMObjectPathClassRef,
6943                                            JMPIjvm::jv.CIMObjectPathNewJ,
6944                                            jOp);
6945 mark.hamzy  1.62       }
6946                        case CIMTYPE_CHAR16:
6947                        {
6948                           Char16 c16;
6949                           cv->get (c16);
6950                           return jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,
6951                                                   JMPIjvm::jv.CharacterNewC,
6952                                                   (jchar)c16);
6953                        }
6954                        case CIMTYPE_DATETIME:
6955 mark.hamzy  1.44       {
6956 mark.hamzy  1.62          CIMDateTime dt;
6957                           cv->get (dt);
6958 marek       1.78          jlong jDT = DEBUG_ConvertCToJava(
6959                                           CIMDateTime*, jlong,
6960                                           new CIMDateTime(dt));
6961 mark.hamzy  1.62          return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
6962                                                   JMPIjvm::jv.CIMDateTimeNewJ,
6963                                                   jDT);
6964 mark.hamzy  1.44       }
6965 mark.hamzy  1.62       case CIMTYPE_OBJECT:
6966 mark.hamzy  1.44       {
6967 mark.hamzy  1.62          CIMObject co;
6968                           cv->get (co);
6969                           if (co.isClass ())
6970                           {
6971 marek       1.78             jlong jCC = DEBUG_ConvertCToJava(
6972                                              CIMClass*,
6973                                              jlong,
6974                                              new CIMClass (co));
6975 mark.hamzy  1.44 
6976 mark.hamzy  1.62             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
6977                                                      JMPIjvm::jv.CIMObjectNewJZ,
6978                                                      jCC,
6979                                                      (jboolean)true);
6980                           }
6981                           else
6982                           {
6983 marek       1.78             jlong jCI = DEBUG_ConvertCToJava(
6984                                              CIMInstance*,
6985                                              jlong,
6986                                              new CIMInstance (co));
6987 mark.hamzy  1.44 
6988 mark.hamzy  1.62             return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
6989                                                      JMPIjvm::jv.CIMObjectNewJZ,
6990                                                      jCI,
6991                                                      (jboolean)false);
6992                           }
6993                        }
6994                        default:
6995                           throwCIMException (jEnv,"+++ unsupported type: ");
6996 mark.hamzy  1.44       }
6997                     }
6998 mark.hamzy  1.62    else
6999 mark.hamzy  1.44    {
7000 mark.hamzy  1.62       switch (type)
7001 mark.hamzy  1.44       {
7002 mark.hamzy  1.62       case CIMTYPE_BOOLEAN:
7003 mark.hamzy  1.44       {
7004 mark.hamzy  1.62          Array<Boolean> bo;
7005                  
7006                           cv->get (bo);
7007 mark.hamzy  1.44 
7008 mark.hamzy  1.62          int          s         = bo.size ();
7009 marek       1.78          jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray(
7010                                                                     s,
7011                                                                     JMPIjvm::jv.BooleanClassRef,
7012                                                                     0);
7013 mark.hamzy  1.44 
7014 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7015 marek       1.78          {
7016                              jEnv->SetObjectArrayElement(
7017                                  jbooleanA,
7018                                  i,
7019                                  jEnv->NewObject(
7020                                      JMPIjvm::jv.BooleanClassRef,
7021                                      JMPIjvm::jv.BooleanNewZ,
7022                                      (jboolean)bo[i]));
7023                           }
7024 mark.hamzy  1.62          return jbooleanA;
7025 mark.hamzy  1.44       }
7026 mark.hamzy  1.62       case CIMTYPE_SINT8:
7027                        {
7028                           Array<Sint8> s8;
7029 schuur      1.3  
7030 mark.hamzy  1.62          cv->get (s8);
7031 mark.hamzy  1.20 
7032 mark.hamzy  1.62          int          s      = s8.size ();
7033 marek       1.78          jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray(
7034                                                                  s,
7035                                                                  JMPIjvm::jv.ByteClassRef,
7036                                                                  0);
7037 mark.hamzy  1.20 
7038 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7039 marek       1.78          {
7040                              jEnv->SetObjectArrayElement(
7041                                  jbyteA,
7042                                  i,
7043                                  jEnv->NewObject(
7044                                      JMPIjvm::jv.ByteClassRef,
7045                                      JMPIjvm::jv.ByteNewB,
7046                                      (jbyte)s8[i]));
7047                           }
7048 mark.hamzy  1.62          return jbyteA;
7049                        }
7050                        case CIMTYPE_UINT8:
7051                        {
7052                           Array<Uint8> u8;
7053 mark.hamzy  1.20 
7054 mark.hamzy  1.62          cv->get (u8);
7055 mark.hamzy  1.20 
7056 mark.hamzy  1.62          int          s       = u8.size ();
7057 marek       1.78          jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray(
7058                                                                 s,
7059                                                                 JMPIjvm::jv.UnsignedInt8ClassRef,
7060                                                                 0);
7061 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7062 marek       1.78          {
7063                               jEnv->SetObjectArrayElement(
7064                                   jshortA,
7065                                   i,
7066                                   jEnv->NewObject(
7067                                       JMPIjvm::jv.UnsignedInt8ClassRef,
7068                                       JMPIjvm::jv.UnsignedInt8NewS,
7069                                       (jshort)u8[i]));
7070                           }
7071 mark.hamzy  1.62          return jshortA;
7072                        }
7073                        case CIMTYPE_SINT16:
7074                        {
7075                           Array<Sint16> s16;
7076 mark.hamzy  1.20 
7077 mark.hamzy  1.62          cv->get (s16);
7078 mark.hamzy  1.20 
7079 mark.hamzy  1.62          int          s       = s16.size ();
7080 marek       1.78          jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray(
7081                                                       s,
7082                                                       JMPIjvm::jv.ShortClassRef,
7083                                                       0);
7084 schuur      1.3  
7085 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7086 marek       1.78          {
7087                               jEnv->SetObjectArrayElement(
7088                                   jshortA,
7089                                   i,
7090                                   jEnv->NewObject(
7091                                       JMPIjvm::jv.ShortClassRef,
7092                                       JMPIjvm::jv.ShortNewS,
7093                                       (jshort)s16[i]));
7094                           }
7095 mark.hamzy  1.62          return jshortA;
7096                        }
7097                        case CIMTYPE_UINT16:
7098                        {
7099                           Array<Uint16> u16;
7100 mark.hamzy  1.44 
7101 mark.hamzy  1.62          cv->get (u16);
7102 mark.hamzy  1.20 
7103 mark.hamzy  1.62          int          s     = u16.size ();
7104 marek       1.78          jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray(
7105                                                    s,
7106                                                    JMPIjvm::jv.UnsignedInt16ClassRef,
7107                                                    0);
7108 schuur      1.3  
7109 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7110 marek       1.78          {
7111                               jEnv->SetObjectArrayElement(
7112                                   jintA,
7113                                   i,
7114                                   jEnv->NewObject(
7115                                       JMPIjvm::jv.UnsignedInt16ClassRef,
7116                                       JMPIjvm::jv.UnsignedInt16NewI,
7117                                       (jint)u16[i]));
7118                           }
7119 mark.hamzy  1.62          return jintA;
7120 mark.hamzy  1.44       }
7121 mark.hamzy  1.62       case CIMTYPE_SINT32:
7122 mark.hamzy  1.44       {
7123 mark.hamzy  1.62          Array<Sint32> s32;
7124                  
7125                           cv->get (s32);
7126 mark.hamzy  1.20 
7127 mark.hamzy  1.62          int          s     = s32.size ();
7128 marek       1.78          jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray(
7129                                                    s,
7130                                                    JMPIjvm::jv.IntegerClassRef,
7131                                                    0);
7132 mark.hamzy  1.20 
7133 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7134 marek       1.78          {
7135                              jEnv->SetObjectArrayElement(
7136                                  jintA,
7137                                  i,
7138                                  jEnv->NewObject(
7139                                      JMPIjvm::jv.IntegerClassRef,
7140                                      JMPIjvm::jv.IntegerNewI,
7141                                      (jint)s32[i]));
7142                           }
7143 mark.hamzy  1.62          return jintA;
7144 mark.hamzy  1.44       }
7145 mark.hamzy  1.62       case CIMTYPE_UINT32:
7146                        {
7147                           Array<Uint32> u32;
7148                           cv->get (u32);
7149                           int          s      = u32.size ();
7150 marek       1.78          jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray(
7151                                                     s,
7152                                                     JMPIjvm::jv.UnsignedInt32ClassRef,
7153                                                     0);
7154 mark.hamzy  1.20 
7155 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7156 marek       1.78          {
7157                              jEnv->SetObjectArrayElement(
7158                                  jlongA,
7159                                  i,
7160                                  jEnv->NewObject(
7161                                      JMPIjvm::jv.UnsignedInt32ClassRef,
7162                                      JMPIjvm::jv.UnsignedInt32NewJ,
7163                                      (jlong)u32[i]));
7164                           }
7165 mark.hamzy  1.62          return jlongA;
7166 mark.hamzy  1.44       }
7167 mark.hamzy  1.62       case CIMTYPE_SINT64:
7168 mark.hamzy  1.44       {
7169 mark.hamzy  1.62          Array<Sint64> s64;
7170                  
7171                           cv->get (s64);
7172 mark.hamzy  1.44 
7173 mark.hamzy  1.62          int          s      = s64.size ();
7174 marek       1.78          jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray(
7175                                                     s,
7176                                                     JMPIjvm::jv.LongClassRef,
7177                                                     0);
7178 mark.hamzy  1.44 
7179 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7180 marek       1.78          {
7181                              jEnv->SetObjectArrayElement(
7182                                  jlongA,
7183                                  i,
7184                                  jEnv->NewObject(
7185                                      JMPIjvm::jv.LongClassRef,
7186                                      JMPIjvm::jv.LongNewJ,
7187                                      (jlong)s64[i]));
7188                           }
7189 mark.hamzy  1.62          return jlongA;
7190 mark.hamzy  1.44       }
7191 mark.hamzy  1.62       case CIMTYPE_UINT64:
7192                        {
7193                           Array<Uint64> u64;
7194                           cv->get (u64);
7195                           int          s     = u64.size ();
7196 marek       1.78          jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray(
7197                                                    s,
7198                                                    JMPIjvm::jv.UnsignedInt64ClassRef,
7199                                                    0);
7200 mark.hamzy  1.44 
7201 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7202                           {
7203                              std::ostringstream oss;
7204                              jstring            jString = 0;
7205                              jobject            jBIG    = 0;
7206 mark.hamzy  1.44 
7207 mark.hamzy  1.62             oss << u64[i] << ends;
7208 mark.hamzy  1.44 
7209 mark.hamzy  1.62             jString = jEnv->NewStringUTF (oss.str ().c_str ());
7210 mark.hamzy  1.44 
7211 mark.hamzy  1.62             if (jString)
7212                              {
7213 marek       1.78                jBIG = jEnv->NewObject(
7214                                            JMPIjvm::jv.UnsignedInt64ClassRef,
7215                                            JMPIjvm::jv.UnsignedInt64NewStr,
7216                                            jString);
7217 mark.hamzy  1.62             }
7218 mark.hamzy  1.44 
7219 mark.hamzy  1.62             if (jBIG)
7220                              {
7221 marek       1.78                jEnv->SetObjectArrayElement(
7222                                     ju64A,
7223                                     i,
7224                                     jEnv->NewObject(
7225                                         JMPIjvm::jv.UnsignedInt64ClassRef,
7226                                         JMPIjvm::jv.UnsignedInt64NewBi,
7227                                         jBIG));
7228 mark.hamzy  1.62             }
7229                           }
7230                           return ju64A;
7231                        }
7232                        case CIMTYPE_REAL32:
7233                        {
7234                           Array<Real32> r32;
7235                           cv->get (r32);
7236                           int          s       = r32.size ();
7237 marek       1.78          jobjectArray jfloatA = (jobjectArray)jEnv->NewObjectArray(
7238                                                      s,
7239                                                      JMPIjvm::jv.FloatClassRef,
7240                                                      0);
7241 mark.hamzy  1.44 
7242 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7243 marek       1.78          {
7244                              jEnv->SetObjectArrayElement(
7245                                  jfloatA,
7246                                  i,
7247                                  jEnv->NewObject(
7248                                      JMPIjvm::jv.FloatClassRef,
7249                                      JMPIjvm::jv.FloatNewF,
7250                                      (jfloat)r32[i]));
7251                           }
7252 mark.hamzy  1.62          return jfloatA;
7253                        }
7254                        case CIMTYPE_REAL64:
7255 mark.hamzy  1.44       {
7256 mark.hamzy  1.62          Array<Real64> r64;
7257 mark.hamzy  1.44 
7258 mark.hamzy  1.62          cv->get (r64);
7259 mark.hamzy  1.20 
7260 mark.hamzy  1.62          int          s        = r64.size ();
7261 marek       1.78          jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray(
7262                                                       s,
7263                                                       JMPIjvm::jv.DoubleClassRef,
7264                                                       0);
7265 schuur      1.3  
7266 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7267 marek       1.78          {
7268                              jEnv->SetObjectArrayElement(
7269                                  jdoubleA,
7270                                  i,
7271                                  jEnv->NewObject(
7272                                      JMPIjvm::jv.DoubleClassRef,
7273                                      JMPIjvm::jv.DoubleNewD,
7274                                      (jdouble)r64[i]));
7275                           }
7276 mark.hamzy  1.62          return jdoubleA;
7277 mark.hamzy  1.44       }
7278 mark.hamzy  1.62       case CIMTYPE_STRING:
7279 mark.hamzy  1.44       {
7280 mark.hamzy  1.62          Array<String> str;
7281 marek       1.78          cv->get(str);
7282 mark.hamzy  1.62          int          s        = str.size ();
7283 marek       1.78          jobjectArray jstringA = (jobjectArray)jEnv->NewObjectArray(
7284                                                       s,
7285                                                       JMPIjvm::jv.StringClassRef,
7286                                                       0);
7287 mark.hamzy  1.44 
7288 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7289 marek       1.78          {
7290                              jEnv->SetObjectArrayElement(
7291                                  jstringA,
7292                                  i,
7293                                  jEnv->NewStringUTF (str[i].getCString ()));
7294                           }
7295 mark.hamzy  1.62          return jstringA;
7296 mark.hamzy  1.44       }
7297 mark.hamzy  1.62       case CIMTYPE_REFERENCE:
7298                        {
7299                           Array<CIMObjectPath> ref;
7300 mark.hamzy  1.44 
7301 mark.hamzy  1.62          cv->get (ref);
7302 schuur      1.3  
7303 mark.hamzy  1.62          int          s     = ref.size ();
7304 marek       1.78          jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray(
7305                                                    s,
7306                                                    JMPIjvm::jv.CIMObjectPathClassRef,
7307                                                    0);
7308 mark.hamzy  1.20 
7309 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7310                           {
7311 marek       1.78             jlong jOP = DEBUG_ConvertCToJava(
7312                                              CIMObjectPath*,
7313                                              jlong,
7314                                              new CIMObjectPath(ref[i]));
7315 mark.hamzy  1.20 
7316 mark.hamzy  1.62             jEnv->SetObjectArrayElement (jrefA,
7317                                                           i,
7318 marek       1.78                                          jEnv->NewObject(
7319                                                               JMPIjvm::jv.CIMObjectPathClassRef,
7320                                                               JMPIjvm::jv.CIMObjectPathNewJ,
7321                                                               jOP));
7322 mark.hamzy  1.62          }
7323                           return jrefA;
7324                        }
7325                        case CIMTYPE_CHAR16:
7326                        {
7327                           Array<Char16> c16;
7328 schuur      1.3  
7329 mark.hamzy  1.62          cv->get (c16);
7330 mark.hamzy  1.44 
7331 mark.hamzy  1.62          int          s     = c16.size ();
7332 marek       1.78          jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray(
7333                                                    s,
7334                                                    JMPIjvm::jv.CharacterClassRef,
7335                                                    0);
7336 mark.hamzy  1.44 
7337 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7338 marek       1.78          {
7339                              jEnv->SetObjectArrayElement(
7340                                  jc16A,
7341                                  i,
7342                                  jEnv->NewObject(
7343                                      JMPIjvm::jv.CharacterClassRef,
7344                                      JMPIjvm::jv.CharacterNewC,
7345                                      (jchar)c16[i]));
7346                           }
7347 mark.hamzy  1.62          return jc16A;
7348 mark.hamzy  1.44       }
7349 mark.hamzy  1.62       case CIMTYPE_DATETIME:
7350 mark.hamzy  1.44       {
7351 mark.hamzy  1.62          Array<CIMDateTime> dt;
7352                  
7353                           cv->get (dt);
7354                  
7355                           int          s    = dt.size ();
7356 marek       1.78          jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray(
7357                                                   s,
7358                                                   JMPIjvm::jv.CIMDateTimeClassRef,
7359                                                   0);
7360 mark.hamzy  1.44 
7361 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7362                           {
7363 marek       1.78             jlong jDT = DEBUG_ConvertCToJava(
7364                                              CIMDateTime*,
7365 kumpf       1.87                             jlong,
7366 marek       1.78                             new CIMDateTime (dt[i]));
7367                  
7368                              jEnv->SetObjectArrayElement(
7369                                  jdtA,
7370                                  i,
7371                                  jEnv->NewObject(
7372                                      JMPIjvm::jv.CIMDateTimeClassRef,
7373                                      JMPIjvm::jv.CIMDateTimeNewJ,
7374                                      jDT));
7375 mark.hamzy  1.62          }
7376                           return jdtA;
7377 mark.hamzy  1.44       }
7378 mark.hamzy  1.62       case CIMTYPE_OBJECT:
7379                        {
7380                           Array<CIMObject> co;
7381 schuur      1.3  
7382 mark.hamzy  1.62          cv->get (co);
7383 mark.hamzy  1.20 
7384 mark.hamzy  1.62          int          s    = co.size ();
7385 marek       1.78          jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray(
7386                                                   s,
7387                                                   JMPIjvm::jv.CIMObjectClassRef,
7388                                                   0);
7389 mark.hamzy  1.20 
7390 mark.hamzy  1.62          for (int i = 0; i < s; i++)
7391                           {
7392                              if (co[i].isClass ())
7393                              {
7394 marek       1.78                jlong jCC = DEBUG_ConvertCToJava(
7395                                                 CIMClass*,
7396                                                 jlong,
7397                                                 new CIMClass (co[i]));
7398                  
7399                                 jEnv->SetObjectArrayElement(
7400                                     jcoA,
7401                                     i,
7402                                     jEnv->NewObject(
7403                                         JMPIjvm::jv.CIMObjectClassRef,
7404                                         JMPIjvm::jv.CIMObjectNewJZ,
7405                                         jCC,
7406                                         (jboolean)true));
7407 mark.hamzy  1.62             }
7408                              else
7409                              {
7410 marek       1.78                jlong jCI = DEBUG_ConvertCToJava(
7411                                                 CIMInstance*,
7412                                                 jlong,
7413                                                 new CIMInstance (co[i]));
7414                  
7415                                 jEnv->SetObjectArrayElement(
7416                                     jcoA,
7417                                     i,
7418                                     jEnv->NewObject(
7419                                         JMPIjvm::jv.CIMObjectClassRef,
7420                                         JMPIjvm::jv.CIMObjectNewJZ,
7421                                         jCI,
7422                                         (jboolean)false));
7423 mark.hamzy  1.62             }
7424                           }
7425                           return jcoA;
7426                        }
7427                        default:
7428                           throwCIMException (jEnv,"+++ unsupported type: ");
7429 schuur      1.3        }
7430                     }
7431 mark.hamzy  1.20 
7432 mark.hamzy  1.62    return NULL;
7433 schuur      1.5  }
7434                  
7435 mark.hamzy  1.62 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
7436                        (JNIEnv *jEnv, jobject jThs, jlong jP)
7437 mark.hamzy  1.44 {
7438 mark.hamzy  1.62    CIMValue *cv       = DEBUG_ConvertJavaToC (jlong, CIMValue*, jP);
7439                     bool      fSuccess = false;
7440 mark.hamzy  1.63    jint      jiJType  = 0;
7441 mark.hamzy  1.62 
7442 mark.hamzy  1.63    jiJType = _dataType::convertCTypeToJavaType (cv->getType (), &fSuccess);
7443 mark.hamzy  1.56 
7444 mark.hamzy  1.63    return jiJType;
7445 mark.hamzy  1.62 }
7446 schuur      1.6  
7447 mark.hamzy  1.62 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
7448                        (JNIEnv *jEnv, jobject jThs, jlong jP)
7449                  {
7450                     CIMValue *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jP);
7451 mark.hamzy  1.44 
7452 mark.hamzy  1.62    return (jboolean)cv->isArray ();
7453                  }
7454 mark.hamzy  1.56 
7455 mark.hamzy  1.62 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
7456                        (JNIEnv *jEnv, jobject jThs, jlong jV)
7457                  {
7458                     CIMValue *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
7459 mark.hamzy  1.56 
7460 mark.hamzy  1.62    return (jstring)jEnv->NewStringUTF (cv->toString ().getCString ());
7461 schuur      1.6  }
7462                  
7463 mark.hamzy  1.62 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
7464                        (JNIEnv *jEnv, jobject jThs, jlong jV)
7465 mark.hamzy  1.20 {
7466 mark.hamzy  1.62    CIMValue *cv = DEBUG_ConvertJavaToC (jlong, CIMValue*, jV);
7467                  
7468                     delete cv;
7469 schuur      1.5  
7470 mark.hamzy  1.62    DEBUG_ConvertCleanup (jlong, jV);
7471                  }
7472 schuur      1.6  
7473                  
7474 mark.hamzy  1.62 // -------------------------------------
7475                  // ---
7476 marek       1.78 // -        ClassEnumeration
7477 mark.hamzy  1.62 // ---
7478                  // -------------------------------------
7479 schuur      1.5  
7480 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
7481                    (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
7482                  {
7483 marek       1.78    Array<CIMClass> *enm = DEBUG_ConvertJavaToC(jlong, Array<CIMClass>*, jEnum);
7484 schuur      1.5  
7485 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMClass*, jlong, new CIMClass ((*enm)[pos]));
7486 schuur      1.5  }
7487                  
7488 mark.hamzy  1.62 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
7489                    (JNIEnv *jEnv, jobject jThs, jlong jEnum)
7490 mark.hamzy  1.20 {
7491 marek       1.78    Array<CIMClass> *enm = DEBUG_ConvertJavaToC(jlong, Array<CIMClass>*, jEnum);
7492 mark.hamzy  1.30 
7493 mark.hamzy  1.62    return enm->size ();
7494                  }
7495 schuur      1.6  
7496 mark.hamzy  1.56 
7497 mark.hamzy  1.62 // -------------------------------------
7498                  // ---
7499 marek       1.78 // -        InstEnumeration
7500 mark.hamzy  1.62 // ---
7501                  // -------------------------------------
7502 mark.hamzy  1.56 
7503 mark.hamzy  1.62 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
7504                    (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
7505                  {
7506 marek       1.78    Array<CIMInstance> *enm = DEBUG_ConvertJavaToC(
7507                                                   jlong,
7508                                                   Array<CIMInstance>*,
7509                                                   jEnum);
7510 mark.hamzy  1.56 
7511 marek       1.78    return DEBUG_ConvertCToJava(
7512                                CIMInstance*,
7513                                jlong,
7514                                new CIMInstance((*enm)[pos]));
7515 schuur      1.5  }
7516                  
7517 mark.hamzy  1.62 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
7518                    (JNIEnv *jEnv, jobject jThs, jlong jEnum)
7519 mark.hamzy  1.20 {
7520 marek       1.78    Array<CIMInstance> *enm = DEBUG_ConvertJavaToC(
7521                                                   jlong,
7522                                                   Array<CIMInstance>*,
7523                                                   jEnum);
7524 schuur      1.6  
7525 mark.hamzy  1.62    return enm->size ();
7526                  }
7527 mark.hamzy  1.20 
7528 mark.hamzy  1.62 // -------------------------------------
7529                  // ---
7530 marek       1.78 // -        JMPIQueryExp
7531 mark.hamzy  1.62 // ---
7532                  // -------------------------------------
7533 schuur      1.6  
7534 mark.hamzy  1.62 /*
7535                   * Class:     org_pegasus_jmpi_JMPIQueryExp
7536                   * Method:    _applyInstance
7537                   * Signature: (II)Z
7538                   */
7539                  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance
7540                    (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)
7541                  {
7542 marek       1.78    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
7543                                                        jlong,
7544                                                        WQLSelectStatement*,
7545                                                        jWQLStmt);
7546                     CIMInstance        *ci       = DEBUG_ConvertJavaToC(
7547                                                        jlong,
7548                                                        CIMInstance*,
7549                                                        jciInstance);
7550 schuur      1.6  
7551 mark.hamzy  1.62    if (  !wql_stmt
7552                        || !ci
7553                        )
7554                     {
7555                        return 0;
7556                     }
7557 mark.hamzy  1.56 
7558 mark.hamzy  1.62    try
7559                     {
7560                        return wql_stmt->evaluate (*ci);
7561 schuur      1.6     }
7562 mark.hamzy  1.62    catch (const Exception &e)
7563                     {
7564 marek       1.78       cerr << "Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance: Caught: "
7565                             << e.getMessage () << endl;
7566 mark.hamzy  1.24 
7567 mark.hamzy  1.62       return false;
7568                     }
7569 mark.hamzy  1.24 }
7570                  
7571 mark.hamzy  1.62 
7572 mark.hamzy  1.38 // -------------------------------------
7573                  // ---
7574 marek       1.78 // -        JMPISelectList
7575 mark.hamzy  1.38 // ---
7576                  // -------------------------------------
7577                  
7578 mark.hamzy  1.62 /*
7579                   * Class:     org_pegasus_jmpi_JMPISelectList
7580                   * Method:    _applyInstance
7581                   * Signature: (II)I
7582                   */
7583                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyInstance
7584                    (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciInstance)
7585 mark.hamzy  1.35 {
7586 marek       1.78    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
7587                                                        jlong,
7588                                                        WQLSelectStatement*,
7589                                                        jWQLStmt);
7590                     CIMInstance        *ci       = DEBUG_ConvertJavaToC(
7591                                                        jlong,
7592                                                        CIMInstance*,
7593                                                        jciInstance);
7594 mark.hamzy  1.62    CIMInstance        *ciRet    = 0;
7595                  
7596                     if (  !wql_stmt
7597                        || !ci
7598                        )
7599                     {
7600                        return 0;
7601                     }
7602                  
7603                     ciRet = new CIMInstance (ci->clone ());
7604 mark.hamzy  1.35 
7605 mark.hamzy  1.62    if (ciRet)
7606                     {
7607                        try
7608                        {
7609                           wql_stmt->applyProjection (*ciRet, false);
7610                        }
7611                        catch (const Exception &e)
7612                        {
7613 marek       1.78          cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyInstance:"
7614                                       " Caught: "
7615                                << e.getMessage () << endl;
7616 mark.hamzy  1.35 
7617 mark.hamzy  1.62          return 0;
7618                        }
7619 mark.hamzy  1.35    }
7620                  
7621 mark.hamzy  1.62    return DEBUG_ConvertCToJava (CIMInstance *, jlong, ciRet);
7622 mark.hamzy  1.35 }
7623                  
7624 mark.hamzy  1.62 /*
7625                   * Class:     org_pegasus_jmpi_JMPISelectList
7626                   * Method:    _applyClass
7627                   * Signature: (II)I
7628                   */
7629                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyClass
7630                    (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt, jlong jciClass)
7631 mark.hamzy  1.35 {
7632 marek       1.78    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
7633                                                        jlong,
7634                                                        WQLSelectStatement*,
7635                                                        jWQLStmt);
7636                     CIMClass           *cc       = DEBUG_ConvertJavaToC(
7637                                                        jlong,
7638                                                        CIMClass*,
7639                                                        jciClass);
7640 mark.hamzy  1.62    CIMClass           *ccRet    = NULL;
7641                  
7642                     if (!wql_stmt)
7643                     {
7644                        return 0;
7645                     }
7646                  
7647                     if (cc)
7648                     {
7649                        CIMObject co (cc->clone ());
7650                  
7651                        try
7652                        {
7653                           wql_stmt->applyProjection (co, false);
7654                        }
7655                        catch (const Exception &e)
7656                        {
7657 kumpf       1.87          cerr << "Java_org_pegasus_jmpi_JMPISelectList__1applyClass: Caught: "
7658 marek       1.78               << e.getMessage () << endl;
7659 mark.hamzy  1.62 
7660                           return 0;
7661                        }
7662 mark.hamzy  1.35 
7663 mark.hamzy  1.62       ccRet = new CIMClass (co);
7664 mark.hamzy  1.35 
7665 mark.hamzy  1.62       return DEBUG_ConvertCToJava (CIMClass *, jlong, ccRet);
7666 mark.hamzy  1.35    }
7667                  
7668                     return 0;
7669                  }
7670                  
7671                  
7672 mark.hamzy  1.38 // -------------------------------------
7673                  // ---
7674 marek       1.78 // -        OperationContext
7675 mark.hamzy  1.38 // ---
7676                  // -------------------------------------
7677                  
7678 mark.hamzy  1.36 /*
7679                   * Class:     OperationContext
7680                   * Method:    _get
7681                   * Signature: (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
7682                   */
7683                  JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get
7684 mark.hamzy  1.61   (JNIEnv *jEnv, jobject jThs, jlong jInst, jstring jContainer, jstring jKey)
7685 mark.hamzy  1.36 {
7686 marek       1.78    OperationContext *poc  = DEBUG_ConvertJavaToC(
7687                                                  jlong,
7688                                                  OperationContext*,
7689                                                  jInst);
7690 mark.hamzy  1.36    jobject           jRet = 0;
7691                  
7692                     if (!poc)
7693                     {
7694                        return jRet;
7695                     }
7696                  
7697                     const char *pszContainer = jEnv->GetStringUTFChars (jContainer, NULL);
7698                     const char *pszKey       = jEnv->GetStringUTFChars (jKey, NULL);
7699                     String      container (pszContainer);
7700                     String      key       (pszKey);
7701                  
7702                     try {
7703                        if (container == "IdentityContainer")
7704                        {
7705 marek       1.78          IdentityContainer ic = poc->get(IdentityContainer::NAME);
7706 mark.hamzy  1.36          if (key == "userName")
7707                           {
7708 marek       1.78             String userName = ic.getUserName();
7709                              jRet = jEnv->NewStringUTF((const char*)userName.getCString());
7710 mark.hamzy  1.36          }
7711                        }
7712                        else if (container == "SubscriptionInstanceContainer")
7713                        {
7714 kumpf       1.87          SubscriptionInstanceContainer sic =
7715 marek       1.78              poc->get(SubscriptionInstanceContainer::NAME);
7716 mark.hamzy  1.36 
7717                           if (key == "subscriptionInstance")
7718                           {
7719                              CIMInstance ci     = sic.getInstance ();
7720 marek       1.78             jlong       jciRef = DEBUG_ConvertCToJava(
7721                                                       CIMInstance*,
7722                                                       jlong,
7723                                                       new CIMInstance (ci));
7724 mark.hamzy  1.36 
7725                              jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef,
7726 mark.hamzy  1.61                                     JMPIjvm::jv.CIMInstanceNewJ,
7727 mark.hamzy  1.36                                     jciRef);
7728                           }
7729                        }
7730                        else if (container == "SubscriptionInstanceNamesContainer")
7731                        {
7732 marek       1.78          SubscriptionInstanceNamesContainer sinc=
7733                               poc->get (SubscriptionInstanceNamesContainer::NAME);
7734 mark.hamzy  1.36 
7735                           if (key == "subscriptionInstanceNames")
7736                           {
7737 marek       1.78             Array<CIMObjectPath> copa = sinc.getInstanceNames ();
7738                              jobjectArray         jcopa = 0;
7739 mark.hamzy  1.36             int                  jcopaLength = copa.size ();
7740                  
7741 marek       1.78             jcopa = (jobjectArray)jEnv->NewObjectArray(
7742                                          jcopaLength,
7743                                          JMPIjvm::jv.CIMObjectPathClassRef,
7744                                          0);
7745 mark.hamzy  1.36 
7746                              for (int i = 0; i < jcopaLength; i++)
7747                              {
7748 marek       1.78                jEnv->SetObjectArrayElement(
7749                                     jcopa,
7750                                     i,
7751                                     jEnv->NewObject(
7752                                         JMPIjvm::jv.CIMObjectPathClassRef,
7753                                         JMPIjvm::jv.CIMObjectPathNewJ,
7754                                         new CIMObjectPath(copa[i])));
7755 mark.hamzy  1.36             }
7756                  
7757                              jRet = (jobject)jcopa;
7758                           }
7759                        }
7760                        else if (container == "SubscriptionFilterConditionContainer")
7761                        {
7762 kumpf       1.87          SubscriptionFilterConditionContainer sfcc =
7763 marek       1.78              poc->get (SubscriptionFilterConditionContainer::NAME);
7764 mark.hamzy  1.36 
7765                           if (key == "filterCondition")
7766                           {
7767                              String filterCondition = sfcc.getFilterCondition ();
7768                  
7769 marek       1.78             jRet=jEnv->NewStringUTF((const char*)filterCondition.getCString());
7770 mark.hamzy  1.36          }
7771                           else if (key == "queryLanguage")
7772                           {
7773                              String queryLanguage = sfcc.getQueryLanguage ();
7774                  
7775 marek       1.78             jRet=jEnv->NewStringUTF((const char*)queryLanguage.getCString ());
7776 mark.hamzy  1.36          }
7777                        }
7778                        else if (container == "SubscriptionFilterQueryContainer")
7779                        {
7780 marek       1.78          SubscriptionFilterQueryContainer sfqc =
7781                               poc->get(SubscriptionFilterQueryContainer::NAME);
7782 mark.hamzy  1.36 
7783                           if (key == "filterQuery")
7784                           {
7785                              String filterQuery = sfqc.getFilterQuery ();
7786                  
7787                              jRet = jEnv->NewStringUTF ((const char*)filterQuery.getCString ());
7788                           }
7789                           else if (key == "queryLanguage")
7790                           {
7791                              String queryLanguage = sfqc.getQueryLanguage ();
7792                  
7793 marek       1.78             jRet = jEnv->NewStringUTF((const char*)queryLanguage.getCString());
7794 mark.hamzy  1.36          }
7795                           else if (key == "sourceNameSpace")
7796                           {
7797 marek       1.78             CIMNamespaceName cimNameSpaceName = sfqc.getSourceNameSpace();
7798                              String           nameSpaceName    = cimNameSpaceName.getString();
7799 mark.hamzy  1.36 
7800 marek       1.78             jRet = jEnv->NewStringUTF((const char*)nameSpaceName.getCString());
7801 mark.hamzy  1.36          }
7802                        }
7803                        else if (container == "SnmpTrapOidContainer")
7804                        {
7805                           SnmpTrapOidContainer stoc = poc->get (SnmpTrapOidContainer::NAME);
7806                  
7807                           if (key == "snmpTrapOid")
7808                           {
7809                              String snmpTrapOid = stoc.getSnmpTrapOid ();
7810                  
7811                              jRet = jEnv->NewStringUTF ((const char*)snmpTrapOid.getCString ());
7812                           }
7813                        }
7814                     }
7815 mark.hamzy  1.44    Catch (jEnv);
7816 mark.hamzy  1.36 
7817                  ///printf ("jRet: %08X\n", (int)jRet);
7818                  
7819                     jEnv->ReleaseStringUTFChars (jContainer, pszContainer);
7820                     jEnv->ReleaseStringUTFChars (jKey, pszKey);
7821                  
7822                     return jRet;
7823                  }
7824                  
7825 mark.hamzy  1.62 
7826                  // -------------------------------------
7827                  // ---
7828 marek       1.78 // -        PathEnumeration
7829 mark.hamzy  1.62 // ---
7830                  // -------------------------------------
7831                  
7832                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
7833                    (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
7834                  {
7835 marek       1.78    Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC(
7836                                                     jlong,
7837                                                     Array<CIMObjectPath>*,
7838                                                     jEnum);
7839                  
7840                     return DEBUG_ConvertCToJava(
7841                                CIMObjectPath*,
7842 kumpf       1.87               jlong,
7843 marek       1.78               new CIMObjectPath((*enm)[pos]));
7844 mark.hamzy  1.62 }
7845                  
7846                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
7847                    (JNIEnv *jEnv, jobject jThs, jlong jEnum)
7848                  {
7849 marek       1.78    Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC(
7850                                                     jlong,
7851                                                     Array<CIMObjectPath>*,
7852                                                     jEnum);
7853 mark.hamzy  1.62 
7854                     return enm->size ();
7855                  }
7856                  
7857                  
7858                  // -------------------------------------
7859                  // ---
7860 marek       1.78 // -        QualEnumeration
7861 mark.hamzy  1.62 // ---
7862                  // -------------------------------------
7863                  
7864                  JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
7865                    (JNIEnv *jEnv, jobject jThs, jlong jEnum, jint pos)
7866                  {
7867 marek       1.78    Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC(
7868                                                        jlong,
7869                                                        Array<CIMQualifierDecl>*,
7870                                                        jEnum);
7871                  
7872                     return DEBUG_ConvertCToJava(
7873                                CIMQualifierDecl*,
7874                                jlong,
7875                                new CIMQualifierDecl((*enm)[pos]));
7876 mark.hamzy  1.62 }
7877                  
7878                  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
7879                    (JNIEnv *jEnv, jobject jThs, jlong jEnum)
7880                  {
7881 marek       1.78    Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC(
7882                                                        jlong,
7883                                                        Array<CIMQualifierDecl>*,
7884                                                        jEnum);
7885 mark.hamzy  1.62 
7886                     return enm->size ();
7887                  }
7888                  
7889                  
7890 mark.hamzy  1.38 // -------------------------------------
7891                  // ---
7892 marek       1.78 // -        SelectExp
7893 mark.hamzy  1.38 // ---
7894                  // -------------------------------------
7895                  
7896                  /*
7897                   * Class:     org_pegasus_jmpi_SelectExp
7898                   * Method:    _finalize
7899                   * Signature: (I)V
7900                   */
7901                  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_SelectExp__1finalize
7902 mark.hamzy  1.61   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)
7903 mark.hamzy  1.38 {
7904 marek       1.78    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC (
7905                                                        jlong,
7906                                                        WQLSelectStatement*,
7907                                                        jWQLStmt);
7908 mark.hamzy  1.38 
7909 mark.hamzy  1.42    delete wql_stmt;
7910 mark.hamzy  1.38 
7911 mark.hamzy  1.61    DEBUG_ConvertCleanup (jlong, jWQLStmt);
7912 mark.hamzy  1.38 }
7913                  
7914                  /*
7915                   * Class:     org_pegasus_jmpi_SelectExp
7916                   * Method:    _newSelectExp
7917                   * Signature: (Ljava/lang/String;)I
7918                   */
7919 mark.hamzy  1.61 JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_SelectExp__1newSelectExp
7920 mark.hamzy  1.38   (JNIEnv *jEnv, jobject jThs, jstring jQuery)
7921                  {
7922                     const char         *pszQuery = jEnv->GetStringUTFChars (jQuery, NULL);
7923 mark.hamzy  1.42    WQLSelectStatement *wql_stmt = NULL;
7924 mark.hamzy  1.38    String              queryLanguage (CALL_SIGN_WQL);
7925                     String              query (pszQuery);
7926                  
7927 mark.hamzy  1.42    wql_stmt = new WQLSelectStatement (queryLanguage, query);
7928 thilo.boehm 1.79 
7929                     PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
7930 thilo.boehm 1.80        "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: wql_stmt = %p",
7931                         wql_stmt));
7932 mark.hamzy  1.42 
7933                     try
7934                     {
7935                        WQLParser::parse (query, *wql_stmt);
7936                     }
7937                     catch (const Exception &e)
7938                     {
7939 thilo.boehm 1.79       PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4,
7940                            "Java_org_pegasus_jmpi_SelectExp__1newSelectExp: Caught: %s",
7941                            (const char*)e.getMessage().getCString()));
7942 mark.hamzy  1.42    }
7943 mark.hamzy  1.38 
7944                     jEnv->ReleaseStringUTFChars (jQuery, pszQuery);
7945                  
7946 mark.hamzy  1.61    return DEBUG_ConvertCToJava (WQLSelectStatement *, jlong, wql_stmt);
7947 mark.hamzy  1.38 }
7948                  
7949                  /*
7950                   * Class:     org_pegasus_jmpi_SelectExp
7951                   * Method:    _getSelectString
7952                   * Signature: (I)Ljava/lang/String;
7953                   */
7954                  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_SelectExp__1getSelectString
7955 mark.hamzy  1.61   (JNIEnv *jEnv, jobject jThs, jlong jWQLStmt)
7956 mark.hamzy  1.38 {
7957 marek       1.78    WQLSelectStatement *wql_stmt = DEBUG_ConvertJavaToC(
7958 kumpf       1.87                                       jlong,
7959                                                        WQLSelectStatement*,
7960 marek       1.78                                       jWQLStmt);
7961 mark.hamzy  1.42    String              cond;
7962                  
7963                     if (wql_stmt)
7964                     {
7965                        try
7966                        {
7967                           cond = wql_stmt->getQuery ();
7968                        }
7969                        catch (const Exception &e)
7970                        {
7971 marek       1.78          cerr << "Java_org_pegasus_jmpi_SelectExp__1getSelectString: Caught: "
7972                                << e.getMessage () << endl;
7973 mark.hamzy  1.42 
7974                           cond = "";
7975                        }
7976                     }
7977                     else
7978                     {
7979                        cond = "";
7980                     }
7981 mark.hamzy  1.38 
7982 mark.hamzy  1.42    return (jstring)jEnv->NewStringUTF (cond.getCString ());
7983 mark.hamzy  1.38 }
7984                  
7985 schuur      1.5  } // extern "C"
7986 schuur      1.1  
7987                  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2