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

   1 karl  1.34 //%2006////////////////////////////////////////////////////////////////////////
   2 schuur 1.1  //
   3 karl   1.10 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
   4             // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   5             // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   6 schuur 1.1  // IBM Corp.; EMC Corporation, The Open Group.
   7 karl   1.10 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   8             // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   9 karl   1.12 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  10             // EMC Corporation; VERITAS Software Corporation; The Open Group.
  11 karl   1.34 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  12             // EMC Corporation; Symantec Corporation; The Open Group.
  13 schuur 1.1  //
  14             // Permission is hereby granted, free of charge, to any person obtaining a copy
  15             // of this software and associated documentation files (the "Software"), to
  16             // deal in the Software without restriction, including without limitation the
  17             // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  18             // sell copies of the Software, and to permit persons to whom the Software is
  19             // furnished to do so, subject to the following conditions:
  20 mark.hamzy 1.36 //
  21 schuur     1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  22                 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  23                 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  24                 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  25                 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  26                 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  27                 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28                 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29                 //
  30                 //==============================================================================
  31                 //
  32                 // Author:      Adrian Schuur, schuur@de.ibm.com
  33                 //
  34                 // Modified By: Adrian Dutta
  35                 //              Andy Viciu
  36                 //              Magda Vacarelu
  37 david.dillard 1.15 //              David Dillard, VERITAS Software Corp.
  38                    //                  (david.dillard@veritas.com)
  39 mark.hamzy    1.24 //              Mark Hamzy,    hamzy@us.ibm.com
  40 schuur        1.1  //
  41                    //%/////////////////////////////////////////////////////////////////////////////
  42                    
  43                    
  44                    #include "JMPIImpl.h"
  45                    
  46 konrad.r      1.14 #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
  47                    #include <Pegasus/Common/DynamicLibrary.h>
  48                    #else
  49 schuur        1.1  #include <dlfcn.h>
  50 konrad.r      1.14 #endif
  51 schuur        1.1  #include <iostream>
  52 mark.hamzy    1.16 #include <sstream>
  53 schuur        1.1  
  54                    #include <Pegasus/Common/Config.h>
  55                    #include <Pegasus/Common/System.h>
  56                    #include <Pegasus/Common/CIMClass.h>
  57                    #include <Pegasus/Common/CIMInstance.h>
  58                    #include <Pegasus/Common/CIMObjectPath.h>
  59                    #include <Pegasus/Common/CIMProperty.h>
  60                    #include <Pegasus/Common/OperationContext.h>
  61                    #include <Pegasus/Provider/CIMOMHandle.h>
  62                    #include <Pegasus/Client/CIMClient.h>
  63 schuur        1.3  #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
  64 mark.hamzy    1.37 #include <Pegasus/ProviderManager2/CMPI/CMPI_SelectExp.h>
  65 schuur        1.1  
  66                    PEGASUS_USING_STD;
  67                    PEGASUS_NAMESPACE_BEGIN
  68                    
  69                    JavaVM *JMPIjvm::jvm=NULL;
  70                    JvmVector JMPIjvm::jv;
  71 schuur        1.2  int JMPIjvm::trace=0;
  72 schuur        1.1  
  73 mark.hamzy    1.26 #ifdef PEGASUS_DEBUG
  74 mark.hamzy    1.16 #define DDD(x) if (JMPIjvm::trace) x;
  75 mark.hamzy    1.26 #else
  76                    #define DDD(x)
  77                    #endif
  78 mark.hamzy    1.16 
  79 mark.hamzy    1.20 #include "Convert.h"
  80                    
  81 mark.hamzy    1.17 JMPIjvm::ClassTable  JMPIjvm::_classTable;
  82                    JMPIjvm::ObjectTable JMPIjvm::_objectTable;
  83                    
  84 schuur        1.1  const char* classNames[]={
  85 mark.hamzy    1.26 /*00*/ "java/util/Vector" ,
  86                    /*01*/ "java/lang/Boolean",
  87                    /*02*/ "java/lang/Byte",
  88                    /*03*/ "java/lang/Short",
  89                    /*04*/ "java/lang/Integer",
  90                    /*05*/ "java/lang/Long",
  91                    /*06*/ "java/lang/Float",
  92                    /*07*/ "java/lang/Double",
  93                    /*08*/ "org/pegasus/jmpi/UnsignedInt8",
  94                    /*09*/ "org/pegasus/jmpi/UnsignedInt16",
  95                    /*10*/ "org/pegasus/jmpi/UnsignedInt32",
  96                    /*11*/ "org/pegasus/jmpi/UnsignedInt64",
  97                    /*12*/ "org/pegasus/jmpi/CIMObjectPath",
  98                    /*13*/ "org/pegasus/jmpi/CIMException",
  99                    /*14*/ "java/math/BigInteger",
 100                    /*15*/ "org/pegasus/jmpi/CIMProperty",
 101                    /*16*/ "org/pegasus/jmpi/CIMOMHandle",
 102                    /*17*/ "org/pegasus/jmpi/CIMClass",
 103                    /*18*/ "org/pegasus/jmpi/CIMInstance",
 104                    /*19*/ "org/pegasus/jmpi/CIMValue",
 105                    /*20*/ "java/lang/Object",
 106 mark.hamzy    1.26 /*21*/ "java/lang/Throwable",
 107                    /*22*/ "java/lang/String",
 108                    /*23*/ "org/pegasus/jmpi/JarClassLoader",
 109                    /*24*/ "org/pegasus/jmpi/CIMDateTime",
 110                    /*25*/ "org/pegasus/jmpi/SelectExp",
 111                    /*26*/ "org/pegasus/jmpi/CIMQualifier",
 112                    /*27*/ "org/pegasus/jmpi/CIMQualifierType",
 113                    /*28*/ "org/pegasus/jmpi/CIMFlavor",
 114                    /*29*/ "org/pegasus/jmpi/CIMArgument",
 115                    /*30*/ "org/pegasus/jmpi/CIMInstanceException",
 116 mark.hamzy    1.35 /*31*/ "org/pegasus/jmpi/CIMObject",
 117                    /*32*/ "java/lang/Character",
 118 mark.hamzy    1.36 /*33*/ "org/pegasus/jmpi/OperationContext",
 119                    /*34*/ "java/lang/Class",
 120 schuur        1.1  };
 121                    
 122                    const METHOD_STRUCT instanceMethodNames[]={
 123 mark.hamzy    1.36 /*00 VectorNew                   */ { /*Vector           */ 0, "<init>",          "()V" },
 124                    /*01 BooleanNewZ                 */ { /*Boolean          */ 1, "<init>",          "(Z)V" },
 125                    /*02 ByteNewB                    */ { /*Byte             */ 2, "<init>",          "(B)V" },
 126                    /*03 ShortNewS                   */ { /*Short            */ 3, "<init>",          "(S)V" },
 127                    /*04 IntegerNewI                 */ { /*Integer          */ 4, "<init>",          "(I)V" },
 128                    /*05 LongNewJ                    */ { /*Long             */ 5, "<init>",          "(J)V" },
 129                    /*06 FloatNewF                   */ { /*Float            */ 6, "<init>",          "(F)V" },
 130                    /*07 DoubleNewD                  */ { /*Double           */ 7, "<init>",          "(D)V" },
 131                    /*08 UnsignedInt8NewS            */ { /*UnsignedInt8     */ 8, "<init>",          "(S)V" },
 132                    /*09 UnsignedInt16NewI           */ { /*UnsignedInt16    */ 9, "<init>",          "(I)V" },
 133                    /*10 UnsignedInt32NewJ           */ { /*UnsignedInt32    */10, "<init>",          "(J)V" },
 134                    /*11 UnsignedInt64NewBi          */ { /*UnsignedInt64    */11, "<init>",          "(Ljava/math/BigInteger;)V" },
 135                    /*12 CIMObjectPathNewI           */ { /*CIMObjectPath    */12, "<init>",          "(I)V" },
 136                    /*13 CIMExceptionNewSt           */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;)V" },
 137                    /*14 CIMPropertyNewI             */ { /*CIMProperty      */15, "<init>",          "(I)V" },
 138                    /*15 VectorAddElement            */ { /*Vector           */ 0, "addElement",      "(Ljava/lang/Object;)V" },
 139                    /*16 VectorElementAt             */ { /*Vector           */ 0, "elementAt",       "(I)Ljava/lang/Object;" },
 140                    /*17 CIMOMHandleNewISt           */ { /*CIMOMHandle      */16, "<init>",          "(ILjava/lang/String;)V" },
 141                    /*18 CIMExceptionNewI            */ { /*CIMException     */13, "<init>",          "(I)V" },
 142                    /*19 CIMClassNewI                */ { /*CIMClass         */17, "<init>",          "(I)V" },
 143                    /*20 CIMInstanceNewI             */ { /*CIMInstance      */18, "<init>",          "(I)V" },
 144 mark.hamzy    1.36 /*21 CIMObjectPathCInst          */ { /*CIMObjectPath    */12, "cInst",           "()I" },
 145                    /*22 CIMInstanceCInst            */ { /*CIMInstance      */18, "cInst",           "()I" },
 146                    /*23 CIMClassCInst               */ { /*CIMClass         */17, "cInst",           "()I" },
 147                    /*24 ObjectToString              */ { /*Object           */20, "toString",        "()Ljava/lang/String;" },
 148                    /*25 ThrowableGetMessage         */ { /*Throwable        */21, "getMessage",      "()Ljava/lang/String;" },
 149                    /*26 CIMExceptionGetID           */ { /*CIMException     */13, "getID",           "()Ljava/lang/String;" },
 150                    /*27 VectorSize                  */ { /*Vector           */ 0, "size",            "()I" },
 151                    /*28 CIMPropertyCInst            */ { /*CIMProperty      */15, "cInst",           "()I" },
 152                    /*29 CIMOMHandleGetClass         */ { /*CIMOMHandle      */16, "getClass",        "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
 153                    /*30 VectorRemoveElementAt       */ { /*Vector           */ 0, "removeElementAt", "(I)V" },
 154                    /*31 CIMValueCInst               */ { /*CIMValue         */19, "cInst",           "()I" },
 155                    /*32 CIMExceptionNewISt          */ { /*CIMException     */13, "<init>",          "(ILjava/lang/String;)V" },
 156                    /*33 CIMExceptionGetCode         */ { /*CIMException     */13, "getCode",         "()I" },
 157                    /*34 CIMDateTimeNewI             */ { /*CIMDateTime      */24, "<init>",          "(I)V" },
 158                    /*35 SelectExpNewI               */ { /*SelectExp        */25, "<init>",          "(I)V" },
 159                    /*36 CIMQualifierNewI            */ { /*CIMQualifier     */26, "<init>",          "(I)V" },
 160                    /*37 CIMFlavorNewI               */ { /*CIMFlavor        */28, "<init>",          "(I)V" },
 161                    /*38 CIMFlavorGetFlavor          */ { /*CIMFlavor        */28, "getFlavor",       "()I" },
 162                    /*39 CIMArgumentCInst            */ { /*CIMArgument      */29, "cInst",           "()I" },
 163                    /*40 CIMArgumentNewI             */ { /*CIMArgument      */29, "<init>",          "(I)V" },
 164                    /*41 CIMExceptionNew             */ { /*CIMException     */13, "<init>",          "()V" },
 165 mark.hamzy    1.36 /*42 CIMExceptionNewStOb         */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;)V" },
 166                    /*43 CIMExceptionNewStObOb       */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
 167                    /*44 CIMExceptionNewStObObOb     */ { /*CIMException     */13, "<init>",          "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },
 168                    /*45 CIMValueNewI                */ { /*CIMValue         */19, "<init>",          "(I)V" },
 169                    /*46 CIMObjectNewIZ              */ { /*CIMObject        */31, "<init>",          "(IZ)V" },
 170                    /*47 CharacterNewC               */ { /*Character        */32, "<init>",          "(C)V" },
 171                    /*48 OperationContextNewI        */ { /*OperationContext */33, "<init>",          "(I)V" },
 172                    /*49 OperationContextUnassociate */ { /*OperationContext */33, "unassociate",     "()V" },
 173                    /*50 ClassGetInterfaces          */ { /*Class            */34, "getInterfaces",   "()[Ljava/lang/Class;" },
 174                    /*51 ClassGetName                */ { /*Class            */34, "getName",         "()Ljava/lang/String;" },
 175 schuur        1.1  };
 176                    
 177                    const METHOD_STRUCT staticMethodNames[]={
 178 mark.hamzy    1.26 /*00*/ { 14, "valueOf",         "(J)Ljava/math/BigInteger;" },
 179                    /*01*/ { 23, "load",            "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
 180 schuur        1.1  };
 181                    
 182                    static int methodInitDone=0;
 183                    
 184 mark.hamzy    1.26 jclass    classRefs[sizeof(classNames)/sizeof(classNames[0])];
 185                    jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])];
 186                    jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(staticMethodNames[0])];
 187 mark.hamzy    1.20 
 188 mark.hamzy    1.26 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name)
 189                    {
 190 schuur        1.1    jclass localRefCls=env->FindClass(name);
 191 mark.hamzy    1.16 
 192                      if (localRefCls==NULL)
 193                         return JNI_FALSE;
 194                    
 195 schuur        1.1    jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
 196 mark.hamzy    1.16 
 197 mark.hamzy    1.28 #if 0
 198                      jmethodID   jmidToString   = env->GetMethodID(globalRefCls, "toString", "()Ljava/lang/String;");
 199                      jstring     jstringResult  = (jstring)env->CallObjectMethod(globalRefCls, jmidToString);
 200                      const char *pszResult      = env->GetStringUTFChars(jstringResult, 0);
 201                    
 202                      DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<", pszResult = "<<pszResult<<PEGASUS_STD(endl));
 203                    
 204                      env->ReleaseStringUTFChars (jstringResult, pszResult);
 205                    #else
 206                      DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<<PEGASUS_STD(hex)<<(int)globalRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));
 207                    #endif
 208                    
 209 schuur        1.1    env->DeleteLocalRef(localRefCls);
 210 mark.hamzy    1.16 
 211 schuur        1.1    return globalRefCls;
 212                    }
 213                    
 214 mark.hamzy    1.26 JMPIjvm::JMPIjvm()
 215                    {
 216 mark.hamzy    1.32    initJVM ();
 217 schuur        1.1  }
 218                    
 219 mark.hamzy    1.26 JMPIjvm::~JMPIjvm()
 220                    {
 221 schuur        1.1  }
 222                    
 223 mark.hamzy    1.26 int JMPIjvm::cacheIDs(JNIEnv *env)
 224                    {
 225 mark.hamzy    1.16    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));
 226                    
 227                       if (methodInitDone==1)
 228                          return JNI_TRUE;
 229                       if (methodInitDone==-1)
 230                          return JNI_FALSE;
 231 schuur        1.1  
 232                       methodInitDone=-1;
 233 mark.hamzy    1.16 
 234 mark.hamzy    1.26    for (unsigned i=0; i<(sizeof(classNames)/sizeof(classNames[0])); i++) {
 235 mark.hamzy    1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl));
 236                          if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)
 237                          {
 238                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error: Count not find global class ref for "<<classNames[i]<<PEGASUS_STD(endl));
 239                    
 240                             return JNI_FALSE;
 241                          }
 242 schuur        1.1     }
 243 schuur        1.7  
 244 mark.hamzy    1.26    for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])); j++) {
 245 mark.hamzy    1.28 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<": "<<instanceMethodNames[j].signature<<PEGASUS_STD(endl));
 246 mark.hamzy    1.16       if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],
 247 mark.hamzy    1.28                                                  instanceMethodNames[j].methodName,
 248                                                                     instanceMethodNames[j].signature))==NULL)
 249 mark.hamzy    1.16       {
 250                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
 251 schuur        1.1           return 0;
 252 mark.hamzy    1.17       }
 253 mark.hamzy    1.16    }
 254 schuur        1.1  
 255 mark.hamzy    1.26    for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(staticMethodNames[0])); k++) {
 256 mark.hamzy    1.28 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<": "<<staticMethodNames[k].signature<<PEGASUS_STD(endl));
 257 mark.hamzy    1.16       if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],
 258 mark.hamzy    1.28                                                      staticMethodNames[k].methodName,
 259                                                                         staticMethodNames[k].signature))==NULL)
 260 mark.hamzy    1.16       {
 261                             DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
 262                             return 0;
 263                          }
 264                       }
 265                    
 266                       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));
 267                    
 268 mark.hamzy    1.30    jv.env=env;
 269                       jv.classRefs=classRefs;
 270                       jv.instMethodIDs=instanceMethodIDs;
 271                       jv.staticMethodIDs=staticMethodIDs;
 272                       jv.instanceMethodNames=instanceMethodNames;
 273                    
 274 schuur        1.1     methodInitDone=1;
 275 mark.hamzy    1.16 
 276 schuur        1.1     return JNI_TRUE;
 277                    }
 278                    
 279 mark.hamzy    1.26 static void throwCIMException(JNIEnv *env,char *e)
 280                    {
 281 mark.hamzy    1.30    JMPIjvm::cacheIDs(env);
 282                    
 283 mark.hamzy    1.26    env->ThrowNew(JMPIjvm::jv.CIMExceptionClassRef,e);
 284 schuur        1.1  }
 285                    
 286 schuur        1.3  int JMPIjvm::destroyJVM()
 287                    {
 288 mark.hamzy    1.16    DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<<PEGASUS_STD(endl));
 289                    
 290 mark.hamzy    1.26 #ifdef JAVA_DESTROY_VM_WORKS
 291 schuur        1.3     if (jvm!=NULL) {
 292                          JvmVector *jv;
 293 mark.hamzy    1.26 
 294 schuur        1.3        attachThread(&jv);
 295 mark.hamzy    1.32 
 296 schuur        1.3        jvm->DestroyJavaVM();
 297 mark.hamzy    1.26 
 298                          jvm = NULL;
 299                    
 300 schuur        1.3        return 0;
 301                       }
 302 mark.hamzy    1.26 #endif
 303 mark.hamzy    1.16 
 304 schuur        1.3     return -1;
 305                    }
 306                    
 307 mark.hamzy    1.32 Mutex JMPIjvm::_initMutex;
 308                    
 309                    int JMPIjvm::initJVM ()
 310 schuur        1.1  {
 311 mark.hamzy    1.32    AutoMutex lock (_initMutex);
 312                    
 313                       if (jvm != NULL)
 314                       {
 315                          return 0;
 316                       }
 317                    
 318 schuur        1.1     JavaVMInitArgs vm_args;
 319                       jint res;
 320 mark.hamzy    1.16    char *envstring;
 321 schuur        1.1     JNIEnv *env;
 322 mark.hamzy    1.16    JavaVMOption *poptions = 0;
 323                       int maxoption = 0;
 324 mark.hamzy    1.29    typedef struct _JVMOptions {
 325                          const char *pszEnvName;
 326                          const char *pszPrefix;
 327                          bool        fSplit;
 328                       } JVMOPTIONS;
 329 mark.hamzy    1.16    Array<std::string> JNIoptions;
 330 mark.hamzy    1.29    static JVMOPTIONS aEnvOptions[] = {
 331                          { "CLASSPATH",                           "-Djava.class.path=", false },
 332                          { "PEGASUS_JMPI_MAX_HEAP",               "-Xmx"              , false },
 333                          { "PEGASUS_JMPI_INITIAL_HEAP",           "-Xms"              , false },
 334                          { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss"              , false },
 335                          { "PEGASUS_JMPI_VERBOSE",                "-verbose:"         , true  }
 336 mark.hamzy    1.16    };
 337                       std::ostringstream oss;
 338 schuur        1.9  
 339                    #ifdef PEGASUS_DEBUG
 340 mark.hamzy    1.16    if (getenv("PEGASUS_JMPI_TRACE")) JMPIjvm::trace=1;
 341                       else JMPIjvm::trace=0;
 342 schuur        1.9  #else
 343 mark.hamzy    1.16    JMPIjvm::trace=0;
 344 schuur        1.9  #endif
 345 schuur        1.2  
 346 mark.hamzy    1.16    DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl));
 347                    
 348 schuur        1.1     jv.initRc=0;
 349                    
 350 mark.hamzy    1.16    envstring=getenv("CLASSPATH");
 351                       if (envstring==NULL) {
 352                          jv.initRc=1;
 353                    
 354                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl));
 355                    
 356                          return -1;
 357                       }
 358                    
 359 mark.hamzy    1.20 ///JNIoptions.append ("-Djava.compiler=NONE");
 360                    ///maxoption++;
 361                    
 362 mark.hamzy    1.29    for (Uint32 i = 0; i < (int)(sizeof (aEnvOptions)/sizeof (aEnvOptions[0])); i++)
 363 mark.hamzy    1.16    {
 364 mark.hamzy    1.29       JVMOPTIONS *pEnvOption = &aEnvOptions[i];
 365 mark.hamzy    1.16 
 366 mark.hamzy    1.29       envstring = getenv (pEnvOption->pszEnvName);
 367 mark.hamzy    1.16       if (envstring)
 368                          {
 369 mark.hamzy    1.29          if (pEnvOption->fSplit)
 370                             {
 371                                bool              fCommaFound  = true;
 372                                string            stringValues = envstring;
 373                                string::size_type posStart     = 0;
 374                                string::size_type posEnd       = stringValues.length () - 1;
 375                    
 376                                while (fCommaFound)
 377                                {
 378                                   string            stringValue;
 379                                   string::size_type posComma    = stringValues.find (',', posStart);
 380                    
 381                                   if (posComma != string::npos)
 382                                   {
 383                                      fCommaFound = true;
 384                                      stringValue = stringValues.substr (posStart, posComma);
 385                                      posStart    = posComma + 1;
 386                                   }
 387                                   else
 388                                   {
 389                                      fCommaFound = false;
 390 mark.hamzy    1.29                   stringValue = stringValues.substr (posStart, posEnd - posStart + 1);
 391                                   }
 392                    
 393                                   DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): fCommaFound = " << fCommaFound << ", posStart = " << posStart << ", posComma = " << posComma << ", posEnd = " << posEnd << "" << PEGASUS_STD(endl));
 394                    
 395                                   maxoption++;
 396                    
 397                                   oss.str ("");
 398                                   oss << pEnvOption->pszPrefix << stringValue;
 399                    
 400                                   JNIoptions.append (oss.str ());
 401                    
 402                                   DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
 403                                }
 404                             }
 405                             else
 406                             {
 407                                maxoption++;
 408 mark.hamzy    1.16 
 409 mark.hamzy    1.29             oss.str ("");
 410                                oss << pEnvOption->pszPrefix << envstring;
 411 mark.hamzy    1.16 
 412 mark.hamzy    1.29             JNIoptions.append (oss.str ());
 413 mark.hamzy    1.16 
 414 mark.hamzy    1.29             DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found!  Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
 415                             }
 416 mark.hamzy    1.16       }
 417                       }
 418                    
 419                       poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption));
 420                       if (!poptions)
 421                       {
 422 schuur        1.1        jv.initRc=1;
 423 mark.hamzy    1.16 
 424                          DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl));
 425                    
 426 schuur        1.1        return -1;
 427                       }
 428                    
 429 mark.hamzy    1.16    for (Uint32 i=0; i < JNIoptions.size(); i++)
 430                       {
 431                          poptions[i].optionString = (char *)JNIoptions[i].c_str ();
 432                    
 433                          DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));
 434                       }
 435                    
 436 mark.hamzy    1.29    vm_args.version=JNI_VERSION_1_2;
 437 mark.hamzy    1.16    vm_args.options=poptions;
 438                       vm_args.nOptions=maxoption;
 439 schuur        1.1     vm_args.ignoreUnrecognized=JNI_TRUE;
 440                    
 441                       res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
 442 mark.hamzy    1.16 
 443                       if (poptions)
 444                       {
 445                          free (poptions);
 446                       }
 447                    
 448 schuur        1.1     if (res!=0) {
 449 mark.hamzy    1.32       jv.initRc=1;
 450                    
 451 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));
 452                    
 453 mark.hamzy    1.32       return -1;
 454 schuur        1.1     }
 455                    
 456 mark.hamzy    1.30    cacheIDs(env);
 457 schuur        1.1  
 458                       if (env->ExceptionOccurred()) {
 459 mark.hamzy    1.32       jv.initRc=1;
 460                    
 461 schuur        1.1        env->ExceptionDescribe();
 462 mark.hamzy    1.32 
 463                    #ifdef JAVA_DESTROY_VM_WORKS
 464                    
 465                          JvmVector *jv = NULL;
 466                    
 467                          attachThread (&jv);
 468                    
 469                          jvm->DestroyJavaVM ();
 470                    
 471                          jvm = NULL;
 472                    #endif
 473                    
 474                          return -1;
 475 schuur        1.1     }
 476                    
 477 mark.hamzy    1.32    jv.initRc=1;
 478                       jv.jvm=jvm;
 479                    
 480 schuur        1.1     return res;
 481                    }
 482                    
 483 mark.hamzy    1.32 JNIEnv* JMPIjvm::attachThread(JvmVector **jvp)
 484                    {
 485                       JNIEnv* env = NULL;
 486                    
 487                       if (jvm == NULL)
 488                       {
 489                          initJVM ();
 490                    
 491                          if (jvm == NULL)
 492                             return NULL;
 493                       }
 494                    
 495                       jvm->AttachCurrentThread ((void**)&env,NULL);
 496                    
 497 schuur        1.1     *jvp=&jv;
 498 mark.hamzy    1.32 
 499 schuur        1.1     return env;
 500                    }
 501                    
 502 mark.hamzy    1.26 void JMPIjvm::detachThread()
 503                    {
 504 schuur        1.1     jvm->DetachCurrentThread();
 505                    }
 506                    
 507                    jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
 508                         const char *cn, jclass *cls)
 509                    {
 510 mark.hamzy    1.17    jobject gProv=NULL;
 511                       jclass scls=NULL;
 512 mark.hamzy    1.16 
 513 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jar = "<<jar<<", cln = "<<cln<<", cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 514 mark.hamzy    1.17 
 515                       _objectTable.lookup(cln,gProv);
 516                       _classTable.lookup(cln,scls);
 517 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 518 mark.hamzy    1.16 
 519 schuur        1.1     if (gProv) {
 520                          *cls=scls;
 521                          return gProv;
 522                       }
 523                    
 524                       /*
 525 mark.hamzy    1.16    DDD(PEGASUS_STD(cout)<<"--- jar: "<<jar<<PEGASUS_STD(endl));
 526                       DDD(PEGASUS_STD(cout)<<"--- cln: "<<cln<<PEGASUS_STD(endl));
 527 schuur        1.1  
 528                       jstring jjar=env->NewStringUTF((const char*)jar.getCString());
 529                       jstring jcln=env->NewStringUTF((const char*)cln.getCString());
 530                    
 531 mark.hamzy    1.26    jclass jcls=(jclass)env->CallStaticObjectMethod(JMPIjvm::jv.JarClassLoaderRef,jv.JarClassLoaderLoad,
 532 schuur        1.1        jjar,jcln);
 533                       if (env->ExceptionCheck()) {
 534                          env->ExceptionDescribe();
 535 mark.hamzy    1.16       PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl);
 536                    ////////return NULL;
 537 schuur        1.1     }
 538                    */
 539                    
 540                       scls=getGlobalClassRef(env,(const char*)cln.getCString());
 541                       if (env->ExceptionCheck()) {
 542 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 543 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 544                    
 545 schuur        1.1        return NULL;
 546                       }
 547 mark.hamzy    1.17    *cls=scls;
 548                    
 549                       if (scls)
 550                       {
 551 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 552 mark.hamzy    1.17       _classTable.insert(cln,scls);
 553                       }
 554 schuur        1.1  
 555                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 556                       jobject lProv=env->NewObject(*cls,id);
 557                       gProv=(jobject)env->NewGlobalRef(lProv);
 558                       if (env->ExceptionCheck()) {
 559 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 560 schuur        1.1        return NULL;
 561                       }
 562 mark.hamzy    1.17 
 563                       if (gProv)
 564                       {
 565 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 566 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 567                       }
 568                    
 569 schuur        1.1     return gProv;
 570                    }
 571                    
 572                    jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
 573                    {
 574 mark.hamzy    1.17    String cln = cn;
 575                       jobject gProv=NULL;
 576                       jclass scls=NULL;
 577 mark.hamzy    1.16 
 578 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
 579 mark.hamzy    1.17 
 580                       _objectTable.lookup(cln,gProv);
 581                       _classTable.lookup(cln,scls);
 582 mark.hamzy    1.18    DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 583 mark.hamzy    1.16 
 584 schuur        1.1     if (gProv) {
 585                          *cls=scls;
 586                          return gProv;
 587                       }
 588                    
 589                       scls=getGlobalClassRef(env,cn);
 590                       if (env->ExceptionCheck()) {
 591 mark.hamzy    1.18       DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
 592 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 593                    
 594 schuur        1.1        return NULL;
 595                       }
 596 mark.hamzy    1.17    *cls=scls;
 597                    
 598                       if (scls)
 599                       {
 600 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 601 mark.hamzy    1.17       _classTable.insert(cln,scls);
 602                       }
 603 schuur        1.1  
 604                       jmethodID id=env->GetMethodID(*cls,"<init>","()V");
 605                       jobject lProv=env->NewObject(*cls,id);
 606                       gProv=(jobject)env->NewGlobalRef(lProv);
 607                       if (env->ExceptionCheck()) {
 608 mark.hamzy    1.16       DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
 609 schuur        1.1        return NULL;
 610                       }
 611 mark.hamzy    1.17 
 612                       if (gProv)
 613                       {
 614 mark.hamzy    1.18       DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
 615 mark.hamzy    1.17       _objectTable.insert(cln,gProv);
 616                       }
 617                    
 618 schuur        1.1     return gProv;
 619                    }
 620                    
 621                    void JMPIjvm::checkException(JNIEnv *env)
 622                    {
 623                       if (env->ExceptionCheck()) {
 624 schuur        1.7        jstring jMsg=NULL,jId=NULL;
 625                          int code;
 626                          const char *cp;
 627                          String msg=String::EMPTY,id=String::EMPTY;
 628                    
 629 schuur        1.1        jthrowable err=env->ExceptionOccurred();
 630 mark.hamzy    1.16       DDD(env->ExceptionDescribe());
 631 schuur        1.7        if (env->IsInstanceOf(err,JMPIjvm::jv.CIMExceptionClassRef)) {
 632                             env->ExceptionClear();
 633                             if (err) {
 634                                jMsg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
 635                                code=(int)env->CallIntMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
 636                                jId=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
 637                                if (jId) {
 638                                   cp=env->GetStringUTFChars(jId,NULL);
 639                                   id=String(cp);
 640                                   env->ReleaseStringUTFChars(jId,cp);
 641                                }
 642                    
 643                                if (jMsg) {
 644                                   cp=env->GetStringUTFChars(jMsg,NULL);
 645                                   msg=String(cp);
 646                                   env->ReleaseStringUTFChars(jMsg,cp);
 647                                }
 648 mark.hamzy    1.16 
 649                                DDD(PEGASUS_STD(cerr)<<"--- throwing Pegasus exception: "<<code<<" "<<id<<" ("<<msg<<")"<<PEGASUS_STD(endl));
 650                    
 651 schuur        1.7              throw CIMException((CIMStatusCode)code,id+" ("+msg+")");
 652 mark.hamzy    1.17          }
 653 schuur        1.7        }
 654                          else {
 655 mark.hamzy    1.28          DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::checkException: exiting..."<<PEGASUS_STD(endl));
 656 schuur        1.7           env->ExceptionDescribe();
 657                             exit(13);
 658 schuur        1.1        }
 659 mark.hamzy    1.28    }
 660 schuur        1.2  }
 661 schuur        1.1  
 662                    /**************************************************************************
 663                     * name         - NewPlatformString
 664                     * description  - Returns a new Java string object for the specified
 665                     *                platform string.
 666                     * parameters   - env
 667                     *                s     Platform encoded string
 668                     * returns      - Java string object pointer or null (0)
 669                     **************************************************************************/
 670                    jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
 671                    {
 672                        size_t len = strlen(s);
 673                        jclass cls;
 674                        jmethodID mid;
 675                        jbyteArray ary;
 676                    
 677                        NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
 678                        NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
 679                        ary = (*env).NewByteArray((jsize)len);
 680                        if (ary != 0) {
 681                            jstring str = 0;
 682 schuur        1.1          (*env).SetByteArrayRegion(ary, 0, (jsize)len,
 683                                                       (jbyte *)s);
 684                            if (!(*env).ExceptionOccurred()) {
 685                                str = (jstring)(*env).NewObject(cls, mid, ary);
 686                            }
 687                            (*env).DeleteLocalRef(ary);
 688                            return str;
 689                        }
 690                        return 0;
 691                    }
 692                    
 693                    
 694                    /**************************************************************************
 695                     * name         - NewPlatformStringArray
 696                     * description  - Returns a new array of Java string objects for the specified
 697                     *                array of platform strings.
 698                     * parameters   - env
 699                     *                strv      Platform encoded string array
 700                     *                strc      Number of strings in strv
 701                     * returns      - Java string array object pointer
 702                     **************************************************************************/
 703 schuur        1.1  jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
 704                    {
 705                        jarray cls;
 706                        jarray ary;
 707                        int i;
 708                    
 709                        NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
 710                        NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
 711                        for (i = 0; i < strc; i++) {
 712                            jstring str = NewPlatformString(env, *strv++);
 713                            NULL_CHECK0(str);
 714                            (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
 715                            (*env).DeleteLocalRef(str);
 716                        }
 717                        return (jobjectArray)ary;
 718                    }
 719                    
 720                    
 721                    
 722 mark.hamzy    1.33 CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) {
 723                       CIMPropertyList pl;
 724                    
 725                       if (l) {
 726                          Array<CIMName> n;
 727                    
 728                          for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {
 729                             jstring     jObj = (jstring)jEnv->GetObjectArrayElement(l,i);
 730                             const char *pn   = jEnv->GetStringUTFChars(jObj,NULL);
 731                    
 732                             n.append(pn);
 733                    
 734                             jEnv->ReleaseStringUTFChars(jObj,pn);
 735                          }
 736                    
 737                          pl.set(n);
 738                       }
 739                    
 740                       return pl;
 741                    }
 742                    
 743 schuur        1.1  
 744                    
 745                    extern "C" {
 746                    
 747                    
 748                    void throwCimException(JNIEnv *jEnv, CIMException & e) {
 749                          JMPIjvm::cacheIDs(jEnv);
 750 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,(jint)e.getCode());
 751 schuur        1.1        jEnv->Throw((jthrowable)ev);
 752                    }
 753                    
 754                    void throwFailedException(JNIEnv *jEnv) {
 755                          JMPIjvm::cacheIDs(jEnv);
 756 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,1);
 757 schuur        1.1        jEnv->Throw((jthrowable)ev);
 758                    }
 759                    
 760                    void throwNotSupportedException(JNIEnv *jEnv) {
 761                          JMPIjvm::cacheIDs(jEnv);
 762 mark.hamzy    1.26       jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,7);
 763 schuur        1.1        jEnv->Throw((jthrowable)ev);
 764                    }
 765                    
 766                    
 767 schuur        1.7  
 768                    
 769                    // -------------------------------------
 770                    // ---
 771                    // -		CIMException
 772                    // ---
 773                    // -------------------------------------
 774                    
 775                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new
 776                      (JNIEnv *jEnv, jobject jThs) {
 777 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 778 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNew);
 779 schuur        1.7  }
 780                    
 781                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS
 782                      (JNIEnv *jEnv, jobject jThs, jstring jM) {
 783 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 784 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewSt,jM);
 785 schuur        1.7  }
 786                    
 787                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO
 788                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {
 789 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 790 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStOb,jM,jO1);
 791 schuur        1.7  }
 792                    
 793                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO
 794                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {
 795 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 796 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObOb,jM,jO1,jO2);
 797 schuur        1.7  }
 798                    
 799                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO
 800                      (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {
 801 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
 802 mark.hamzy    1.26    jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObObOb,jM,jO1,jO2,jO3);
 803 schuur        1.7  }
 804                    
 805                    
 806                    
 807 schuur        1.1  // -------------------------------------
 808                    // ---
 809                    // -		CIMOMHandle
 810                    // ---
 811                    // -------------------------------------
 812                    
 813                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
 814 schuur        1.7    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo,
 815 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
 816                    {
 817                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 818                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 819                       CIMPropertyList   pl;
 820                       OperationContext  ctx;
 821                    
 822                       if (jPl)
 823                          pl=getList(jEnv,jPl);
 824                       else
 825                          pl=CIMPropertyList();
 826                    
 827 schuur        1.1     try {
 828 mark.hamzy    1.20       CIMClass cls=ch->getClass(ctx,cop->getNameSpace(),
 829                                                    cop->getClassName(),
 830                                                    (Boolean)lo,
 831                                                    (Boolean)iq,
 832                                                    (Boolean)ic,
 833                                                    pl);
 834                    
 835                          return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
 836 schuur        1.1     }
 837                       Catch(jEnv);
 838 mark.hamzy    1.20 
 839 schuur        1.1     return 0;
 840                    }
 841                    
 842 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass
 843 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 844 mark.hamzy    1.20 {
 845                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 846                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 847 mark.hamzy    1.22    CIMClass         *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 848 mark.hamzy    1.20    OperationContext  ctx;
 849                    
 850 schuur        1.7     try {
 851                          ch->createClass(ctx,cop->getNameSpace(),*cl);
 852                       }
 853                       Catch(jEnv);
 854                    }
 855                    
 856                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass
 857 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl)
 858                    {
 859                       CIMOMHandle     *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 860                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 861                       CIMClass        *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
 862 schuur        1.7     OperationContext ctx;
 863 mark.hamzy    1.20 
 864 schuur        1.7     try {
 865                         ch->modifyClass(ctx,cop->getNameSpace(),*cl);
 866                       }
 867                       Catch(jEnv);
 868                    }
 869                    
 870                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass
 871 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 872                    {
 873                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 874                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 875                       OperationContext  ctx;
 876 schuur        1.7  
 877                       try {
 878                          ch->deleteClass(ctx,cop->getNameSpace(),cop->getClassName());
 879                       }
 880                       Catch(jEnv);
 881                    }
 882                    
 883                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames
 884 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
 885                    {
 886                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 887                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 888                       CIMNamespaceName  ns  = cop->getNameSpace();
 889                       OperationContext  ctx;
 890                    
 891 schuur        1.7     try {
 892 mark.hamzy    1.33       Array<CIMName>        enm   = ch->enumerateClassNames(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)deep);
 893 mark.hamzy    1.20       Array<CIMObjectPath> *enmop = new Array<CIMObjectPath>();
 894                    
 895 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
 896                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
 897                          }
 898 mark.hamzy    1.20 
 899                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
 900 schuur        1.7     }
 901                       Catch(jEnv);
 902 mark.hamzy    1.20 
 903 schuur        1.7     return 0;
 904                    }
 905                    
 906                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses
 907                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
 908 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic)
 909                    {
 910                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 911                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 912                       OperationContext  ctx;
 913                    
 914 schuur        1.1     try {
 915 mark.hamzy    1.20       Array<CIMClass> en=ch->enumerateClasses(ctx,
 916                                                                  cop->getNameSpace(),
 917                                                                  cop->getClassName(),
 918 mark.hamzy    1.33                                               (Boolean)deep,
 919 mark.hamzy    1.20                                               (Boolean)lo,
 920 mark.hamzy    1.33                                               (Boolean)iq,
 921                                                                  (Boolean)ic);
 922 mark.hamzy    1.20 
 923                          return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(en));
 924 schuur        1.7     }
 925                       Catch(jEnv);
 926 mark.hamzy    1.20 
 927 schuur        1.7     return 0;
 928                    }
 929                    
 930                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
 931                       (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic,
 932 mark.hamzy    1.20         jobjectArray jPl)
 933                    {
 934                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 935                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 936                       OperationContext  ctx;
 937                       CIMPropertyList   pl;
 938                    
 939                       if (jPl)
 940                          pl=getList(jEnv,jPl);
 941                       else
 942                          pl=CIMPropertyList();
 943 schuur        1.7  
 944                       try {
 945 mark.hamzy    1.20       CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,
 946                                                                            cop->getNameSpace(),
 947                                                                            *cop,
 948                                                                            (Boolean)lo,
 949                                                                            (Boolean)iq,
 950                                                                            (Boolean)ic,
 951                                                                            pl));
 952                          return DEBUG_ConvertCToJava (CIMInstance*, jint, inst);
 953 schuur        1.7     }
 954                       Catch(jEnv);
 955 mark.hamzy    1.20 
 956 schuur        1.7     return -1;
 957                    }
 958                    
 959                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
 960 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop)
 961                    {
 962                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 963                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 964                       OperationContext  ctx;
 965 schuur        1.7  
 966                       try {
 967                          ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
 968                       }
 969                       Catch(jEnv);
 970                    }
 971                    
 972                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance
 973 mark.hamzy    1.22   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi)
 974 mark.hamzy    1.20 {
 975                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 976                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 977 mark.hamzy    1.22    CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
 978 mark.hamzy    1.20    OperationContext  ctx;
 979                    
 980 schuur        1.7     try {
 981                          ci->setPath(*cop);
 982 mark.hamzy    1.20 
 983 schuur        1.7        CIMObjectPath obj=ch->createInstance(ctx,cop->getNameSpace(),*ci);
 984 mark.hamzy    1.20 
 985                          return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
 986 schuur        1.7     }
 987                       Catch(jEnv);
 988 mark.hamzy    1.20 
 989 schuur        1.7     return 0;
 990                    }
 991                    
 992                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance
 993                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi,
 994 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
 995                    {
 996                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
 997                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
 998                       CIMInstance      *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
 999                       CIMPropertyList   pl  = getList(jEnv,jPl);
1000                       OperationContext  ctx;
1001                    
1002 schuur        1.7     try {
1003                          ci->setPath(*cop);
1004                          ch->modifyInstance(ctx,cop->getNameSpace(),*ci,(Boolean)iq,pl);
1005                       }
1006                       Catch(jEnv);
1007                    }
1008                    
1009                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames
1010 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep)
1011                    {
1012                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1013                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1014                       OperationContext  ctx;
1015                    
1016 schuur        1.7     try {
1017                          Array<CIMObjectPath> enm=ch->enumerateInstanceNames(ctx,
1018 mark.hamzy    1.20                                                           cop->getNameSpace(),
1019                                                                              cop->getClassName()); //,(Boolean)deep);
1020                          return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1021 schuur        1.7     }
1022                       Catch(jEnv);
1023 mark.hamzy    1.20 
1024 schuur        1.7     return 0;
1025                    }
1026                    
1027                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances
1028                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
1029 mark.hamzy    1.20         jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl)
1030                    {
1031                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1032                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1033                       CIMPropertyList   pl;
1034                       OperationContext  ctx;
1035                    
1036                       if (jPl)
1037                          pl=getList(jEnv,jPl);
1038                       else
1039                          pl=CIMPropertyList();
1040                    
1041 schuur        1.7     try {
1042 mark.hamzy    1.20       Array<CIMInstance> en=ch->enumerateInstances(ctx,
1043                                                                       cop->getNameSpace(),
1044                                                                       cop->getClassName(),
1045 mark.hamzy    1.33                                                    (Boolean)deep,
1046                                                                       (Boolean)lo,
1047                                                                       (Boolean)iq,
1048                                                                       (Boolean)ic,
1049 mark.hamzy    1.20                                                    pl);
1050                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(en));
1051 schuur        1.7     }
1052                       Catch(jEnv);
1053 mark.hamzy    1.20 
1054 schuur        1.7     return 0;
1055                    }
1056                    
1057                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery
1058 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jQuery, jstring jQl)
1059                    {
1060                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1061                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1062                       OperationContext  ctx;
1063                       const char       *str = jEnv->GetStringUTFChars(jQuery,NULL);
1064                       String            query(str);
1065 schuur        1.7  
1066                       jEnv->ReleaseStringUTFChars(jQuery,str);
1067 mark.hamzy    1.27 
1068 schuur        1.7     str=jEnv->GetStringUTFChars(jQl,NULL);
1069 mark.hamzy    1.20 
1070 schuur        1.7     String ql(str);
1071 mark.hamzy    1.20 
1072 schuur        1.7     jEnv->ReleaseStringUTFChars(jQl,str);
1073                    
1074                       try {
1075 mark.hamzy    1.20       Array<CIMObject>    enm=ch->execQuery(ctx,cop->getNameSpace(),ql,query);
1076 schuur        1.7        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
1077 mark.hamzy    1.20 
1078 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1079                             enmInst->append(CIMInstance(enm[i]));
1080 schuur        1.1        }
1081 mark.hamzy    1.20 
1082                          return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1083 schuur        1.1     }
1084                       Catch(jEnv);
1085 mark.hamzy    1.20 
1086 schuur        1.7     return 0;
1087 schuur        1.1  }
1088                    
1089 schuur        1.7  
1090 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
1091 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN)
1092                    {
1093                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1094                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1095                       OperationContext  ctx;
1096                       const char       *str = jEnv->GetStringUTFChars(jN,NULL);
1097 mark.hamzy    1.27    CIMName           prop(str);
1098                    
1099                       jEnv->ReleaseStringUTFChars(jN,str);
1100 schuur        1.3  
1101 schuur        1.1     try {
1102                          CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
1103 mark.hamzy    1.20 
1104                          return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
1105 schuur        1.1     }
1106                       Catch(jEnv);
1107 mark.hamzy    1.20 
1108 schuur        1.1     return -1;
1109                    }
1110                    
1111 schuur        1.7  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty
1112 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jPn, jint jV)
1113                    {
1114                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1115                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1116                       OperationContext  ctx;
1117                       CIMValue         *val = (CIMValue*)jCop;
1118                       const char       *str = jEnv->GetStringUTFChars(jPn,NULL);
1119                       CIMName           pName(str);
1120                    
1121 schuur        1.7     jEnv->ReleaseStringUTFChars(jPn,str);
1122 mark.hamzy    1.27 
1123 schuur        1.7     try {
1124                          ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);
1125                       }
1126                       Catch(jEnv);
1127                    }
1128                    
1129 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod
1130                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut)
1131                    {
1132 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1133                    
1134 mark.hamzy    1.20    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1135                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1136                       OperationContext  ctx;
1137                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1138                       CIMName           method(str);
1139 schuur        1.7  
1140                       jEnv->ReleaseStringUTFChars(jMn,str);
1141                    
1142                       Array<CIMParamValue> in;
1143                       Array<CIMParamValue> out;
1144                    
1145 mark.hamzy    1.26    for (int i = 0, m = jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i < m; i++) {
1146 schuur        1.7         JMPIjvm::checkException(jEnv);
1147 mark.hamzy    1.20 
1148 mark.hamzy    1.26        jobject jProp = jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
1149 mark.hamzy    1.23 
1150 schuur        1.7         JMPIjvm::checkException(jEnv);
1151 mark.hamzy    1.20 
1152 mark.hamzy    1.26        jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
1153 mark.hamzy    1.20        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1154                    
1155 schuur        1.7         JMPIjvm::checkException(jEnv);
1156 mark.hamzy    1.20 
1157 schuur        1.7         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
1158                       }
1159                       try {
1160 mark.hamzy    1.23       CIMValue *val = new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1161 schuur        1.7  
1162                          for (int i=0,m=out.size(); i<m; i++) {
1163 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
1164                             const CIMValue       v    = parm.getValue();
1165                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
1166                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
1167 mark.hamzy    1.26          jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
1168 mark.hamzy    1.20 
1169 mark.hamzy    1.26          jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
1170 schuur        1.7        }
1171 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1172                       }
1173 schuur        1.7     Catch(jEnv);
1174 mark.hamzy    1.20 
1175 schuur        1.7     return 0;
1176                    }
1177 schuur        1.1  
1178 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24
1179                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,
1180 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
1181                    {
1182 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1183                    
1184 mark.hamzy    1.20    CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1185                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1186                       OperationContext  ctx;
1187                       const char       *str = jEnv->GetStringUTFChars(jMn,NULL);
1188 mark.hamzy    1.27    CIMName           method(str);
1189 mark.hamzy    1.20 
1190 schuur        1.7     jEnv->ReleaseStringUTFChars(jMn,str);
1191                    
1192                       Array<CIMParamValue> in;
1193                       Array<CIMParamValue> out;
1194 schuur        1.3  
1195 schuur        1.7     for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
1196                           JMPIjvm::checkException(jEnv);
1197 mark.hamzy    1.20 
1198 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
1199                           JMPIjvm::checkException(jEnv);
1200 mark.hamzy    1.20 
1201 mark.hamzy    1.26        jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
1202 mark.hamzy    1.20        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
1203                    
1204 schuur        1.7         JMPIjvm::checkException(jEnv);
1205 mark.hamzy    1.20 
1206 schuur        1.7         in.append(*p);
1207                       }
1208 schuur        1.1     try {
1209 schuur        1.7        CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
1210                    
1211                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
1212 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
1213                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
1214 mark.hamzy    1.20 
1215 mark.hamzy    1.17          jEnv->SetObjectArrayElement(jOut,i,
1216 mark.hamzy    1.26                                      jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
1217 schuur        1.7        }
1218 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMValue*, jint, val);
1219 schuur        1.1     }
1220                       Catch(jEnv);
1221 mark.hamzy    1.20 
1222 schuur        1.7     return 0;
1223 schuur        1.1  }
1224                    
1225 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames
1226                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1227 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
1228                    {
1229                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1230                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1231                       OperationContext  ctx;
1232                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1233 mark.hamzy    1.27    CIMName           assocClass(str);
1234 mark.hamzy    1.23 
1235 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1236 mark.hamzy    1.23 
1237 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1238 mark.hamzy    1.23 
1239 schuur        1.7     CIMName resultClass(str);
1240 mark.hamzy    1.23 
1241 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1242 mark.hamzy    1.23 
1243 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1244 mark.hamzy    1.23 
1245 schuur        1.7     String role(str);
1246 mark.hamzy    1.23 
1247 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1248 mark.hamzy    1.23 
1249 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1250 mark.hamzy    1.23 
1251 schuur        1.7     String resultRole(str);
1252 mark.hamzy    1.23 
1253 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1254                    
1255 schuur        1.1     try {
1256 schuur        1.7        Array<CIMObjectPath> enm=ch->associatorNames(ctx,
1257 mark.hamzy    1.23                                                    cop->getNameSpace(),
1258                                                                       *cop,
1259                                                                       assocClass,
1260                                                                       resultClass,
1261                                                                       role,
1262                                                                       resultRole);
1263                    
1264 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1265 schuur        1.7     }
1266                       Catch(jEnv);
1267 mark.hamzy    1.20 
1268 schuur        1.7     return 0;
1269                    }
1270                    
1271 mark.hamzy    1.31 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators
1272 schuur        1.7    (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1273                       jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
1274 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1275                    {
1276                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1277                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1278                       OperationContext  ctx;
1279                       CIMPropertyList   pl  = getList(jEnv,jPl);
1280                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1281 mark.hamzy    1.27    CIMName           assocClass(str);
1282 mark.hamzy    1.23 
1283 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1284 mark.hamzy    1.23 
1285 schuur        1.7     str=jEnv->GetStringUTFChars(jResultClass,NULL);
1286 mark.hamzy    1.23 
1287 schuur        1.7     CIMName resultClass(str);
1288 mark.hamzy    1.23 
1289 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultClass,str);
1290 mark.hamzy    1.23 
1291 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1292 mark.hamzy    1.23 
1293 schuur        1.7     String role(str);
1294 mark.hamzy    1.23 
1295 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1296 mark.hamzy    1.23 
1297 schuur        1.7     str=jEnv->GetStringUTFChars(jResultRole,NULL);
1298 mark.hamzy    1.23 
1299 schuur        1.7     String resultRole(str);
1300 mark.hamzy    1.23 
1301 schuur        1.7     jEnv->ReleaseStringUTFChars(jResultRole,str);
1302                    
1303                       try {
1304 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->associators(ctx,
1305                                                                        cop->getNameSpace(),
1306                                                                        *cop,
1307                                                                        assocClass,
1308                                                                        resultClass,
1309                                                                        role,
1310                                                                        resultRole,
1311                                                                        (Boolean)includeQualifiers,
1312                                                                        (Boolean)includeClassOrigin,
1313                                                                        pl);
1314                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1315                    
1316 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1317                             enmInst->append(CIMInstance(enm[i]));
1318 schuur        1.1        }
1319 mark.hamzy    1.23 
1320 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1321 schuur        1.1     }
1322                       Catch(jEnv);
1323 mark.hamzy    1.20 
1324 schuur        1.7     return 0;
1325 schuur        1.1  }
1326                    
1327 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames
1328                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1329 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
1330                    {
1331                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1332                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1333                       OperationContext  ctx;
1334                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1335 mark.hamzy    1.27    CIMName           assocClass(str);
1336 mark.hamzy    1.23 
1337 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1338 mark.hamzy    1.23 
1339 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1340 mark.hamzy    1.23 
1341 schuur        1.7     String role(str);
1342 mark.hamzy    1.23 
1343 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1344                    
1345                       try {
1346 mark.hamzy    1.23       Array<CIMObjectPath> enm = ch->referenceNames(ctx,
1347                                                                        cop->getNameSpace(),
1348                                                                        *cop,
1349                                                                        assocClass,
1350                                                                        role);
1351                    
1352 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
1353 schuur        1.7     }
1354                       Catch(jEnv);
1355 mark.hamzy    1.20 
1356 schuur        1.7     return 0;
1357                    }
1358 schuur        1.1  
1359 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references
1360                      (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1361                       jstring jAssocClass, jstring jRole,
1362 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
1363                    {
1364                       CIMOMHandle      *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1365                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
1366                       OperationContext  ctx;
1367                       CIMPropertyList   pl  = getList(jEnv,jPl);
1368                       const char       *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
1369                       CIMName           assocClass(str);
1370 schuur        1.3  
1371 schuur        1.7     jEnv->ReleaseStringUTFChars(jAssocClass,str);
1372 mark.hamzy    1.23 
1373 schuur        1.7     str=jEnv->GetStringUTFChars(jRole,NULL);
1374 mark.hamzy    1.20 
1375 schuur        1.7     String role(str);
1376 mark.hamzy    1.20 
1377 schuur        1.7     jEnv->ReleaseStringUTFChars(jRole,str);
1378                    
1379 schuur        1.1     try {
1380 mark.hamzy    1.23       Array<CIMObject>    enm     = ch->references(ctx,
1381                                                                       cop->getNameSpace(),
1382                                                                       *cop,
1383                                                                       assocClass,
1384                                                                       role,
1385                                                                       (Boolean)includeQualifiers,
1386                                                                       (Boolean)includeClassOrigin,
1387                                                                       pl);
1388                          Array<CIMInstance> *enmInst = new Array<CIMInstance>();
1389                    
1390 schuur        1.7        for (int i=0,m=enm.size(); i<m; i++) {
1391                             enmInst->append(CIMInstance(enm[i]));
1392                          }
1393 mark.hamzy    1.23 
1394 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
1395 schuur        1.1     }
1396                       Catch(jEnv);
1397 mark.hamzy    1.20 
1398 schuur        1.7     return 0;
1399 schuur        1.1  }
1400                    
1401 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent
1402 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd)
1403                    {
1404                       CIMOMHandle *ch  = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1405                       CIMInstance *ind = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInd);
1406 mark.hamzy    1.37    const char  *str = jEnv->GetStringUTFChars (jName, NULL);
1407                       String       name (str);
1408 schuur        1.1  
1409 mark.hamzy    1.37    jEnv->ReleaseStringUTFChars (jName, str);
1410                    
1411                       str = jEnv->GetStringUTFChars (jNs, NULL);
1412                    
1413                       String ns (str);
1414                    
1415                       jEnv->ReleaseStringUTFChars (jNs, str);
1416 mark.hamzy    1.27 
1417 mark.hamzy    1.37    CIMObjectPath ref (ind->getPath ());
1418 mark.hamzy    1.20 
1419 mark.hamzy    1.37    ref.setNameSpace (ns);
1420                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ref = "<<ref.toString ()<<PEGASUS_STD(endl));
1421                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ind = "<<ind->getPath ().toString ()<<PEGASUS_STD(endl));
1422                       ind->setPath (ref);
1423                       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ind = "<<ind->getPath ().toString ()<<PEGASUS_STD(endl));
1424 mark.hamzy    1.20 
1425 mark.hamzy    1.37    JMPIProviderManager::indProvRecord   *prec        = NULL;
1426                       String                                sPathString = ind->getPath ().toString ();
1427                       OperationContext                     *context     = NULL;
1428                       bool                                  fResult     = false;
1429 schuur        1.3  
1430 mark.hamzy    1.37    {
1431                          AutoMutex lock (JMPIProviderManager::mutexProvTab);
1432 mark.hamzy    1.20 
1433 mark.hamzy    1.37       fResult = JMPIProviderManager::provTab.lookup (name, prec);
1434 schuur        1.8  
1435 mark.hamzy    1.37       DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() fResult = "<<fResult<<", name = "<<name<<PEGASUS_STD(endl));
1436                       }
1437 schuur        1.3  
1438 mark.hamzy    1.37    if (fResult)
1439                       {
1440                          if (prec->enabled)
1441                          {
1442                             try
1443                             {
1444                                prec->handler->deliver (*prec->ctx, *ind);
1445 schuur        1.3           }
1446                             Catch(jEnv);
1447                          }
1448                       }
1449 mark.hamzy    1.37    else
1450                       {
1451                          DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() provider name \""<<name<<"\" not found"<<PEGASUS_STD(endl));
1452 schuur        1.3     }
1453                    }
1454 schuur        1.1  
1455 mark.hamzy    1.21 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1finalize
1456                       (JNIEnv *jEnv, jobject jThs, jint jCh)
1457                    {
1458                       CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh);
1459                    
1460                       delete ch;
1461                    
1462                       DEBUG_ConvertCleanup (jint, jCh);
1463                    }
1464                    
1465 schuur        1.1  // -------------------------------------
1466                    // ---
1467                    // -		CIMClass
1468                    // ---
1469                    // -------------------------------------
1470                    
1471                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
1472 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCls)
1473                    {
1474                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1475                    
1476 schuur        1.1     try {
1477 mark.hamzy    1.23       CIMInstance *ci = new CIMInstance(cls->getClassName());
1478 mark.hamzy    1.20 
1479 schuur        1.5        for (int i=0,m=cls->getQualifierCount(); i<m; i++) {
1480                             try {
1481                                ci->addQualifier(cls->getQualifier(i).clone());
1482 mark.hamzy    1.17          }
1483                             catch (Exception e) {}
1484 schuur        1.5        }
1485 schuur        1.1        for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
1486 mark.hamzy    1.23          CIMProperty cp = cls->getProperty(i);
1487                    
1488 schuur        1.1           ci->addProperty(cp.clone());
1489 mark.hamzy    1.23 
1490 schuur        1.5           for (int j=0, s=cp.getQualifierCount(); j<s; j++) {
1491                                try {
1492                                   ci->getProperty(i).addQualifier(cp.getQualifier(j));
1493 mark.hamzy    1.17             }
1494                                catch (Exception e) {}
1495                             }
1496 schuur        1.1        }
1497 mark.hamzy    1.23 
1498 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1499 schuur        1.1     }
1500                       Catch(jEnv);
1501 mark.hamzy    1.20 
1502 schuur        1.1     return 0;
1503                    }
1504                    
1505                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
1506 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls)
1507                    {
1508                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1509 r.kieninger   1.11 
1510 schuur        1.1     try {
1511                          const String &cn=cls->getClassName().getString();
1512                          jstring str=jEnv->NewStringUTF(cn.getCString());
1513 mark.hamzy    1.20 
1514 schuur        1.1        return str;
1515                       }
1516                       Catch(jEnv);
1517 mark.hamzy    1.20 
1518 schuur        1.1     return 0;
1519                    }
1520                    
1521                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
1522 mark.hamzy    1.20    (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1523                    {
1524                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1525                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1526                       jint        rv  = -1;
1527                       Uint32      pos = cls->findQualifier(String(str));
1528                    
1529 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1530 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(cls->getQualifier(pos)));
1531                    
1532 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1533 mark.hamzy    1.20 
1534 schuur        1.1     return rv;
1535                    }
1536                    
1537                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
1538 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1539                    {
1540                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1541                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1542                       jint        rv  = -1;
1543                       Uint32      pos = cls->findProperty(CIMName(str));
1544                    
1545 schuur        1.1     if (pos!=PEG_NOT_FOUND)
1546 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMProperty*, jint, new CIMProperty(cls->getProperty(pos)));
1547                    
1548 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1549 mark.hamzy    1.20 
1550 schuur        1.1     return rv;
1551                    }
1552                    
1553                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
1554 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ)
1555                    {
1556                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1557                       const char *str = jEnv->GetStringUTFChars(jQ,NULL);
1558                       Uint32      pos = cls->findQualifier(String(str));
1559                    
1560 schuur        1.1     jEnv->ReleaseStringUTFChars(jQ,str);
1561 mark.hamzy    1.20 
1562 schuur        1.1     return (jboolean)(pos!=PEG_NOT_FOUND);
1563                    }
1564                    
1565                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
1566 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1567                    {
1568 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1569                    
1570 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1571 schuur        1.5  
1572 schuur        1.1     for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
1573 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(cls->getProperty(i));
1574                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1575 mark.hamzy    1.16 
1576 mark.hamzy    1.26       jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1577 mark.hamzy    1.16 
1578 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1579 schuur        1.1     }
1580 mark.hamzy    1.20 
1581 schuur        1.1     return jVec;
1582                    }
1583                    
1584 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
1585 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP)
1586                    {
1587                       CIMClass    *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1588                       CIMProperty *p   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
1589                    
1590 schuur        1.5     cls->addProperty(*p);
1591                    }
1592                    
1593                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
1594 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1595                    {
1596 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1597                    
1598 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1599                    
1600 schuur        1.5     for (int i=cls->getPropertyCount()-1; i>=0; i--) {
1601                          cls->removeProperty(i);
1602                       }
1603 mark.hamzy    1.26    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
1604 mark.hamzy    1.20       JMPIjvm::checkException(jEnv);
1605                    
1606 mark.hamzy    1.26       jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
1607 mark.hamzy    1.20 
1608 mark.hamzy    1.26       jint         jp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
1609 mark.hamzy    1.20       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
1610                    
1611                          JMPIjvm::checkException(jEnv);
1612                    
1613 schuur        1.5        cls->addProperty(*cp);
1614                       }
1615                    }
1616                    
1617                    
1618                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
1619 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1620                    {
1621 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1622                    
1623 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1624 schuur        1.5  
1625                       for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
1626 mark.hamzy    1.20       CIMQualifier *cq   = new CIMQualifier(cls->getQualifier(i));
1627                          jint          jCq  = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq);
1628 mark.hamzy    1.26       jobject       qual = jEnv->NewObject(JMPIjvm::jv.CIMQualifierClassRef,JMPIjvm::jv.CIMQualifierNewI,jCq);
1629 mark.hamzy    1.20 
1630 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,qual);
1631 schuur        1.5     }
1632 mark.hamzy    1.20 
1633 schuur        1.5     return jVec;
1634                    }
1635                    
1636 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
1637 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1638                    {
1639                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1640                       CIMClass   *cls = new CIMClass(CIMName(str), CIMName());
1641                    
1642 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1643 mark.hamzy    1.20 
1644                       return DEBUG_ConvertCToJava (CIMClass*, jint, cls);
1645 schuur        1.1  }
1646                    
1647                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
1648 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls)
1649                    {
1650                       CIMClass     *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1651                       const String &cn  = cls->getSuperClassName().getString();
1652                    
1653 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1654 mark.hamzy    1.20 
1655 schuur        1.1     return str;
1656                    }
1657                    
1658                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
1659 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec)
1660                    {
1661 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1662                    
1663 mark.hamzy    1.20    CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1664                    
1665 schuur        1.1     if (cls->hasKeys()) {
1666                          Array<CIMName> keyNames;
1667                          cls->getKeyNames(keyNames);
1668                          for(int i=0, s=keyNames.size();i<s;i++){
1669                             Uint32 pos=cls->findProperty(keyNames[i]);
1670                             if (pos!=PEG_NOT_FOUND){
1671 mark.hamzy    1.20             CIMProperty *cp  = new CIMProperty(cls->getProperty(pos));
1672                                jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1673                    
1674 mark.hamzy    1.26             jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1675 mark.hamzy    1.20 
1676 mark.hamzy    1.26             jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1677 schuur        1.1           }
1678                          }
1679                       }
1680 mark.hamzy    1.20 
1681 schuur        1.1     return jVec;
1682                    }
1683                    
1684                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
1685 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN)
1686                    {
1687                       CIMClass   *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1688                       const char *str = jEnv->GetStringUTFChars(jN,NULL);
1689                       jint        rv  = -1;
1690                       Uint32      pos = cls->findMethod(String(str));
1691                    
1692 schuur        1.1     if (pos!=PEG_NOT_FOUND) {
1693 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMMethod*, jint, new CIMMethod(cls->getMethod(pos)));
1694 schuur        1.1     }
1695 mark.hamzy    1.20 
1696 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1697 mark.hamzy    1.20 
1698 schuur        1.1     return rv;
1699                    }
1700                    
1701                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
1702 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared)
1703                    {
1704                       CIMClass *cls             = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1705                       CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC (jint, CIMClass*, jClsToBeCompared);
1706                    
1707 schuur        1.1     return cls->identical(*clsToBeCompared);
1708                    }
1709                    
1710                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
1711 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jCls)
1712                    {
1713                       CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls);
1714                    
1715 schuur        1.1     delete cls;
1716 mark.hamzy    1.20 
1717                       DEBUG_ConvertCleanup (jint, jCls);
1718 schuur        1.1  }
1719                    
1720 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
1721 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
1722                    {
1723                       CIMClass *cc   = DEBUG_ConvertJavaToC (jint, CIMClass*, jInst);
1724 mark.hamzy    1.22    CIMClass *cf   = 0;
1725 mark.hamzy    1.20    CIMName   clsn = cc->getClassName();
1726 schuur        1.7  
1727                       if (lo) {
1728 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1729                    
1730 schuur        1.7        CIMName clsn=cc->getClassName();
1731 mark.hamzy    1.23 
1732 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--)
1733                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1734 mark.hamzy    1.23 
1735 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1736 schuur        1.7     }
1737                       else if (jPl) {
1738 mark.hamzy    1.23       CIMPropertyList pl = getList(jEnv,jPl);
1739                          Array<CIMName>  n  = pl.getPropertyNameArray();
1740                    
1741                          cf = new CIMClass(clsn, cc->getSuperClassName());
1742                    
1743                          for (int i = 0,s = n.size(); i < s; i++) {
1744 schuur        1.7           Uint32 pos=cc->findProperty(n[i]);
1745 mark.hamzy    1.23 
1746 schuur        1.7           if (pos!=PEG_NOT_FOUND) {
1747                                if (iq) {
1748 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos).clone();
1749                    
1750                                   if (!ic)
1751                                      cp.setClassOrigin(CIMName());
1752                    
1753 schuur        1.7                 cf->addProperty(cp);
1754                                }
1755                                else {
1756 mark.hamzy    1.23                CIMProperty cp = cc->getProperty(pos);
1757                                   CIMName     co;
1758                    
1759                                   if (ic)
1760                                      co = cp.getClassOrigin();
1761                    
1762                                   CIMProperty np(cp.getName(),
1763                                                  cp.getValue(),
1764                                                  cp.getArraySize(),
1765                                                  cp.getReferenceClassName(),
1766                                                  co,
1767                                                  cp.getPropagated());
1768                    
1769 schuur        1.7                 cf->addProperty(np);
1770                                }
1771                             }
1772                          }
1773 mark.hamzy    1.23       if (iq)
1774                             for (Uint32 i = 0, s = cc->getQualifierCount(); i < s; i++)
1775                                cf->addQualifier(cc->getQualifier(i));
1776 schuur        1.7     }
1777                       else if (iq) {
1778 mark.hamzy    1.23       cf = new CIMClass(cc->clone());
1779                    
1780                          if (ic)
1781                             return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1782                    
1783                          for (int i = cf->getPropertyCount()-1; i >= 0; i--) {
1784 schuur        1.7           CIMProperty cp=cf->getProperty(i);
1785 mark.hamzy    1.23 
1786 schuur        1.7           cp.setClassOrigin(CIMName());
1787                             cf->removeProperty(i);
1788                             cf->addProperty(cp);
1789                          }
1790                       }
1791                       else {
1792 mark.hamzy    1.23       cf = new CIMClass(clsn, cc->getSuperClassName());
1793                    
1794                          for (int i = cc->getPropertyCount()-1; i >= 0; i--) {
1795                             CIMProperty cp = cc->getProperty(i);
1796                             CIMName     co;
1797                    
1798                             if (ic)
1799                                co = cp.getClassOrigin();
1800                    
1801                             CIMProperty np(cp.getName(),
1802                                            cp.getValue(),
1803                                            cp.getArraySize(),
1804                                            cp.getReferenceClassName(),
1805                                            co,
1806                                            cp.getPropagated());
1807                    
1808 schuur        1.7           cf->addProperty(np);
1809                          }
1810                       }
1811                    
1812 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMClass*, jint, cf);
1813 schuur        1.7  }
1814                    
1815 schuur        1.1  
1816                    
1817                    // -------------------------------------
1818                    // ---
1819                    // -		CIMInstance
1820                    // ---
1821                    
1822                    // -------------------------------------
1823                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
1824 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
1825                    {
1826                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance());
1827 schuur        1.1  }
1828                    
1829                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
1830 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
1831                    {
1832 mark.hamzy    1.27    const char *str = jEnv->GetStringUTFChars(jN,NULL);
1833                       CIMInstance *ci = new CIMInstance(CIMName(str));
1834 mark.hamzy    1.20 
1835 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
1836                    
1837                       return DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1838 schuur        1.1  }
1839                    
1840                    //Added by Andy Viciu
1841                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
1842 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1843                    {
1844                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1845                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1846                    
1847 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
1848                    
1849 schuur        1.1     /* NOT SUPPORTED AND NOT NEEDED*/
1850                    }
1851                    
1852                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
1853 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV)
1854                    {
1855                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1856                       CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
1857                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1858                       Uint32       pos = ci->findProperty(CIMName(str));
1859                    
1860 schuur        1.5     try {
1861 mark.hamzy    1.27       if (pos!=PEG_NOT_FOUND)
1862                          {
1863 schuur        1.6           CIMProperty cp=ci->getProperty(pos);
1864 mark.hamzy    1.27 
1865 schuur        1.6           if (cp.getType()==cv->getType())
1866 mark.hamzy    1.27          {
1867 schuur        1.6              cp.setValue(*cv);
1868 mark.hamzy    1.27          }
1869                             else
1870                             {
1871 mark.hamzy    1.16             DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");
1872                                DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));
1873                    
1874 schuur        1.6              throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
1875                             }
1876 mark.hamzy    1.27 
1877 schuur        1.6           ci->removeProperty(pos);
1878                             ci->addProperty(cp);
1879                          }
1880 mark.hamzy    1.27       else
1881                          {
1882 schuur        1.6           CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
1883                             ci->addProperty(*cp);
1884 schuur        1.1        }
1885                       }
1886 schuur        1.5     Catch(jEnv);
1887 schuur        1.1  
1888                       jEnv->ReleaseStringUTFChars(jN,str);
1889                    }
1890                    
1891 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
1892 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV)
1893                    {
1894                       throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported"));
1895 schuur        1.5  }
1896                    
1897 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
1898 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1899                    {
1900                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1901                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1902                       jint         rv  = -1;
1903                    
1904 schuur        1.1     try {
1905 mark.hamzy    1.23       Uint32 pos = ci->findProperty(CIMName(str));
1906                    
1907 mark.hamzy    1.27       if (pos != PEG_NOT_FOUND)
1908                          {
1909 mark.hamzy    1.23          CIMProperty *cp = new CIMProperty(ci->getProperty(pos));
1910                    
1911 mark.hamzy    1.20          rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1912 schuur        1.1        }
1913                       }
1914                       Catch(jEnv);
1915 mark.hamzy    1.20 
1916 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1917 mark.hamzy    1.20 
1918 schuur        1.1     return rv;
1919                    }
1920                    
1921                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
1922 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1923                    {
1924 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1925                    
1926 mark.hamzy    1.20    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1927 schuur        1.5  
1928 mark.hamzy    1.37 //@HACK
1929                    //printf("ci->getPropertyCount() = %d\n", ci->getPropertyCount());
1930 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1931 mark.hamzy    1.37 //printf("%s %d\n",
1932                    //     (const char *)ci->getProperty(i).getName ().getString ().getCString (),
1933                    //     ci->getProperty(i).findQualifier(String("key")));
1934 schuur        1.1        if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
1935 mark.hamzy    1.20          CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1936                             jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1937                    
1938 mark.hamzy    1.26          jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1939 mark.hamzy    1.20 
1940 mark.hamzy    1.26          jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1941 schuur        1.1        }
1942                       }
1943                    
1944                       return jVec;
1945                    }
1946                    
1947                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
1948 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1949                    {
1950                       CIMInstance  *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1951                       const String &cn = ci->getClassName().getString();
1952                    
1953 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
1954 mark.hamzy    1.20 
1955 schuur        1.1     return str;
1956                    }
1957                    
1958                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
1959 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN)
1960                    {
1961                       CIMInstance *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1962                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
1963                       jint         rv  = -1;
1964                       Uint32       pos = ci->findQualifier(String(str));
1965                    
1966 mark.hamzy    1.27    if (pos!=PEG_NOT_FOUND)
1967                       {
1968 mark.hamzy    1.20       rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos)));
1969 schuur        1.1     }
1970 mark.hamzy    1.20 
1971 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
1972 mark.hamzy    1.20 
1973 schuur        1.1     return rv;
1974                    }
1975                    
1976                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
1977 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
1978                    {
1979                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1980                       CIMInstance *cl = new CIMInstance(ci->clone());
1981                    
1982                       return DEBUG_ConvertCToJava (CIMInstance*, jint, cl);
1983 schuur        1.1  }
1984                    
1985                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
1986 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec)
1987                    {
1988 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
1989                    
1990 mark.hamzy    1.20    CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
1991 mark.hamzy    1.16 
1992 schuur        1.1     for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1993 mark.hamzy    1.20       CIMProperty *cp  = new CIMProperty(ci->getProperty(i));
1994                          jint         jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
1995 mark.hamzy    1.16 
1996 mark.hamzy    1.26       jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
1997 mark.hamzy    1.16 
1998 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
1999 schuur        1.1     }
2000 mark.hamzy    1.16 
2001 schuur        1.1     return jVec;
2002                    }
2003                    
2004                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
2005 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
2006                    {
2007                       CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2008                    
2009 schuur        1.1     delete ci;
2010 mark.hamzy    1.20 
2011                       DEBUG_ConvertCleanup (jint, jInst);
2012 schuur        1.1  }
2013                    
2014 schuur        1.7  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties
2015 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo)
2016                    {
2017                       CIMInstance *ci   = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2018 mark.hamzy    1.22    CIMInstance *cf   = 0;
2019 mark.hamzy    1.20    CIMName      clsn = ci->getClassName();
2020 schuur        1.7  
2021                       if (lo) {
2022                          cf=new CIMInstance(ci->clone());
2023                          CIMName clsn=ci->getClassName();
2024                          for (int i=cf->getPropertyCount()-1; i>=0; i--)
2025                             if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
2026 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2027 schuur        1.7     }
2028                       else if (jPl) {
2029                          CIMPropertyList pl=getList(jEnv,jPl);
2030                          Array<CIMName> n=pl.getPropertyNameArray();
2031                          cf=new CIMInstance(clsn);
2032                          for (int i=0,s=n.size(); i<s; i++) {
2033                             Uint32 pos=ci->findProperty(n[i]);
2034                             if (pos!=PEG_NOT_FOUND) {
2035                                if (iq) {
2036                                   CIMProperty cp=ci->getProperty(pos).clone();
2037                                   if (!ic) cp.setClassOrigin(CIMName());
2038                                   cf->addProperty(cp);
2039                                }
2040                                else {
2041                                   CIMProperty cp=ci->getProperty(pos);
2042                                   CIMName co;
2043                                   if (ic) co=cp.getClassOrigin();
2044                                   CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
2045                                                  cp.getReferenceClassName(),co,cp.getPropagated());
2046                                   cf->addProperty(np);
2047                                }
2048 schuur        1.7           }
2049                          }
2050                          cf->setPath(ci->getPath());
2051                       }
2052                       else if (iq) {
2053                          cf=new CIMInstance(ci->clone());
2054 mark.hamzy    1.20       if (ic) return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2055 schuur        1.7        for (int i=cf->getPropertyCount()-1; i>=0; i--) {
2056                             CIMProperty cp=cf->getProperty(i);
2057                             cp.setClassOrigin(CIMName());
2058                             cf->removeProperty(i);
2059                             cf->addProperty(cp);
2060                          }
2061                       }
2062                       else {
2063                          cf=new CIMInstance(clsn);
2064                          for (int i=ci->getPropertyCount()-1; i>=0; i--) {
2065                             CIMProperty cp=ci->getProperty(i);
2066                             CIMName co;
2067                             if (ic) co=cp.getClassOrigin();
2068                             CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
2069                                            cp.getReferenceClassName(),co,cp.getPropagated());
2070                             cf->addProperty(np);
2071                          }
2072                          cf->setPath(ci->getPath());
2073                       }
2074                    
2075 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMInstance*, jint, cf);
2076 schuur        1.7  }
2077 schuur        1.1  
2078                    // -------------------------------------
2079                    // ---
2080                    // -		CIMObjectPath
2081                    // ---
2082                    // -------------------------------------
2083                    
2084 mark.hamzy    1.20 CIMObjectPath* construct()
2085                    {
2086                       CIMObjectPath *cop = new CIMObjectPath();
2087                       _nameSpace     n;
2088                    
2089 schuur        1.1     cop->setNameSpace(n.nameSpace());
2090                       cop->setHost(n.hostName());
2091 mark.hamzy    1.20 
2092 schuur        1.1     return cop;
2093                    }
2094                    
2095                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
2096 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2097                    {
2098                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, construct());
2099 schuur        1.1  }
2100                    
2101                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
2102 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn)
2103                    {
2104                       CIMObjectPath *cop = construct();
2105                       const char    *str = jEnv->GetStringUTFChars(jCn,NULL);
2106                    
2107                       if (str)
2108                          cop->setClassName(str);
2109 mark.hamzy    1.27 
2110 schuur        1.1     jEnv->ReleaseStringUTFChars(jCn,str);
2111 mark.hamzy    1.20 
2112                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2113 schuur        1.1  }
2114                    
2115                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
2116 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs)
2117                    {
2118                       CIMObjectPath *cop  = construct();
2119                       const char    *str1 = NULL;
2120                       const char    *str2 = NULL;
2121 schuur        1.1  
2122                       try {
2123 schuur        1.6        if (jCn) str1=jEnv->GetStringUTFChars(jCn,NULL);
2124                          if (jNs) str2=jEnv->GetStringUTFChars(jNs,NULL);
2125 schuur        1.1        if (str1) cop->setClassName(str1);
2126                          if (str2) cop->setNameSpace(str2);
2127                       }
2128 schuur        1.5     Catch(jEnv);
2129 schuur        1.1  
2130 schuur        1.6     if (str1) jEnv->ReleaseStringUTFChars(jCn,str1);
2131                       if (str2) jEnv->ReleaseStringUTFChars(jNs,str2);
2132 mark.hamzy    1.20 
2133                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2134 schuur        1.1  }
2135                    
2136                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
2137 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jInst)
2138                    {
2139                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst);
2140                       CIMObjectPath *cop = new CIMObjectPath(ci->getPath());
2141                       _nameSpace     n;
2142                    
2143 schuur        1.1     if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
2144                       if (cop->getHost()==NULL) cop->setHost(n.hostName());
2145 mark.hamzy    1.20 
2146                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2147 schuur        1.1  }
2148                    
2149                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
2150 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2151                    {
2152                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2153                    
2154 schuur        1.1     delete cop;
2155 mark.hamzy    1.20 
2156                       DEBUG_ConvertCleanup (jint, jCop);
2157 schuur        1.1  }
2158                    
2159                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
2160 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2161                    {
2162                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2163                       const String  &hn = cop->getHost();
2164                    
2165 schuur        1.1     jstring str=jEnv->NewStringUTF(hn.getCString());
2166 mark.hamzy    1.20 
2167 schuur        1.1     return str;
2168                    }
2169                    
2170                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
2171 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2172                    {
2173                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2174                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2175                    
2176 schuur        1.1     cop->setHost(String(str));
2177 mark.hamzy    1.27 
2178 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2179                    }
2180                    
2181                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
2182 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2183                    {
2184                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2185                       const String  &cn  = cop->getClassName().getString();
2186                    
2187 schuur        1.1     jstring str=jEnv->NewStringUTF(cn.getCString());
2188 mark.hamzy    1.20 
2189 schuur        1.1     return str;
2190                    }
2191                    
2192                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
2193 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2194                    {
2195                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2196                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2197                    
2198 schuur        1.1     cop->setClassName(String(str));
2199 mark.hamzy    1.27 
2200 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2201                    }
2202                    
2203                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
2204 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2205                    {
2206                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2207                       const String  &ns  = cop->getNameSpace().getString();
2208                    
2209 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2210 mark.hamzy    1.20 
2211 schuur        1.1     return str;
2212                    }
2213                    
2214                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
2215 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName)
2216                    {
2217                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2218                       const char    *str = jEnv->GetStringUTFChars(jName,NULL);
2219                    
2220 schuur        1.1     cop->setNameSpace(CIMNamespaceName(str));
2221 mark.hamzy    1.27 
2222 schuur        1.1     jEnv->ReleaseStringUTFChars(jName,str);
2223                    }
2224                    
2225                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
2226 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jId, jint jVal)
2227                    {
2228                       CIMObjectPath       *cop         = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2229                       const char          *str         = jEnv->GetStringUTFChars(jId,NULL);
2230                       CIMValue            *cv          = DEBUG_ConvertJavaToC (jint, CIMValue*, jVal);
2231                       Array<CIMKeyBinding> keyBindings = cop->getKeyBindings();
2232                    
2233 schuur        1.1     keyBindings.append(CIMKeyBinding(str,*cv));
2234                       cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
2235 mark.hamzy    1.27 
2236 schuur        1.1     jEnv->ReleaseStringUTFChars(jId,str);
2237                    }
2238                    
2239                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
2240 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2241                    {
2242 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
2243                    
2244 mark.hamzy    1.20    CIMObjectPath              *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2245                       const Array<CIMKeyBinding> &akb = cop->getKeyBindings();
2246 schuur        1.1  
2247                       for (Uint32 i=0,s=akb.size(); i<s; i++) {
2248                          const String &n=akb[i].getName().getString();
2249                          const String &v=akb[i].getValue();
2250                          CIMKeyBinding::Type t=akb[i].getType();
2251 mark.hamzy    1.20       CIMValue *cv = 0;
2252 schuur        1.1        switch (t) {
2253                          case CIMKeyBinding::NUMERIC:
2254                             cv=new CIMValue((Sint32)atol(v.getCString()));
2255                             break;
2256                          case CIMKeyBinding::STRING:
2257                             cv=new CIMValue(v);
2258                             break;
2259                          case CIMKeyBinding::BOOLEAN:
2260                             cv=new CIMValue((Boolean)(v.getCString()));
2261                             break;
2262                          case CIMKeyBinding::REFERENCE:
2263                             cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
2264                             break;
2265                          default:
2266                             throwCIMException(jEnv,"+++ unsupported type: ");
2267                          }
2268 r.kieninger   1.11 
2269 mark.hamzy    1.20       CIMProperty *cp = 0;
2270                          if (t!=CIMKeyBinding::REFERENCE)
2271 schuur        1.1           cp=new CIMProperty(n,*cv);
2272 mark.hamzy    1.20       else
2273                             cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
2274                    
2275                          jint    jCp  = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2276 mark.hamzy    1.26       jobject prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp);
2277 schuur        1.1  
2278 mark.hamzy    1.26       jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop);
2279 schuur        1.1     }
2280 mark.hamzy    1.20 
2281 schuur        1.1     return jVec;
2282                    }
2283                    
2284                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
2285 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jStr)
2286                    {
2287                       CIMObjectPath              *cop        = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2288                       const Array<CIMKeyBinding> &akb        = cop->getKeyBindings();
2289                       const char                 *strKeyName = jEnv->GetStringUTFChars(jStr,NULL);
2290                       jstring                     retStr     = NULL;
2291                    
2292 mark.hamzy    1.27    for (Uint32 i=0,s=akb.size(); i<s; i++)
2293                       {
2294 schuur        1.1        const String &n=akb[i].getName().getString();
2295 mark.hamzy    1.27 
2296                          if (n==String(strKeyName))
2297                          {
2298 schuur        1.1           retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
2299                             break;
2300                          }
2301                       }
2302 mark.hamzy    1.20 
2303 schuur        1.1     jEnv->ReleaseStringUTFChars(jStr,strKeyName);
2304 mark.hamzy    1.20 
2305 schuur        1.1     return retStr;
2306                    }
2307                    
2308                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
2309 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jStr)
2310                    {
2311                       const char    *strCop = jEnv->GetStringUTFChars(jStr,NULL);
2312                       CIMObjectPath *cop    = new CIMObjectPath();
2313                    
2314 schuur        1.1     cop->set(String(strCop));
2315 mark.hamzy    1.27 
2316 schuur        1.1     jEnv->ReleaseStringUTFChars(jStr,strCop);
2317 mark.hamzy    1.20 
2318                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop);
2319 schuur        1.1  }
2320                    
2321                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
2322 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec)
2323                    {
2324 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
2325                    
2326 mark.hamzy    1.20    CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2327                       Array<CIMKeyBinding>  akb;
2328                    
2329 mark.hamzy    1.26    for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<s; i++) {
2330                          jobject o=jEnv->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i));
2331 mark.hamzy    1.20 
2332 mark.hamzy    1.26       jint         jCp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst);
2333 mark.hamzy    1.20       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp);
2334                    
2335 schuur        1.1        akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
2336                       }
2337                       cop->setKeyBindings(akb);
2338                    }
2339                    
2340                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
2341 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2342                    {
2343                       CIMObjectPath *cop  = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2344                       CIMObjectPath *copl = new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
2345                    
2346                       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, copl);
2347 schuur        1.1  }
2348                    
2349                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
2350 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jCop)
2351                    {
2352                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
2353                       const String  &ns  = cop->toString();
2354                    
2355 schuur        1.1     jstring str=jEnv->NewStringUTF(ns.getCString());
2356 mark.hamzy    1.20 
2357 schuur        1.1     return str;
2358                    }
2359                    
2360                    // -------------------------------------
2361                    // ---
2362                    // -		CIMDataType
2363                    // ---
2364                    // -------------------------------------
2365                    
2366                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
2367 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type)
2368                    {
2369                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type));
2370 schuur        1.1  }
2371                    
2372                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
2373 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jint size)
2374                    {
2375                      return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,size));
2376 schuur        1.1  }
2377                    
2378                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
2379 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef)
2380                    {
2381                       const char *ref   = jEnv->GetStringUTFChars(jRef,NULL);
2382                       jint        cInst = DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,String(ref)));
2383                    
2384 schuur        1.1     jEnv->ReleaseStringUTFChars(jRef,ref);
2385 mark.hamzy    1.20 
2386 schuur        1.1     return cInst;
2387                    }
2388                    
2389                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
2390 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2391                    {
2392                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2393                    
2394 schuur        1.1     return dt->_array==true;
2395                    }
2396                    
2397                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
2398 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2399                    {
2400                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2401                    
2402 schuur        1.1     return dt->_reference==true;
2403                    }
2404                    
2405                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
2406 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2407                    {
2408                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2409                    
2410 schuur        1.1     return dt->_reference==true;
2411                    }
2412                    
2413                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
2414 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2415                    {
2416                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2417                    
2418 schuur        1.1     return dt->_type;
2419                    }
2420                    
2421                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
2422 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2423                    {
2424                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2425                    
2426 schuur        1.1     return dt->_size;
2427                    }
2428                    
2429                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
2430 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2431                    {
2432                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2433                       jstring    str = jEnv->NewStringUTF(dt->_refClass.getCString());
2434                    
2435 schuur        1.1     return str;
2436                    }
2437                    
2438                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
2439 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jDt)
2440                    {
2441                       _dataType *dt  = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2442                       jstring    str = NULL;
2443                    
2444 mark.hamzy    1.35    if (dt->_type & 0x10)
2445                       {
2446                          bool   fSuccess = false;
2447                          String tmp      = _dataType::convertJavaTypeToChars (dt->_type-0x10, &fSuccess);
2448                    
2449                          if (!fSuccess)
2450                             return str;
2451                    
2452                          tmp = tmp + "[]";
2453                    
2454                          str = jEnv->NewStringUTF(tmp.getCString());
2455                       }
2456                       else if (dt->_type == 0x20 + 1) // REFERENCE
2457                       {
2458                          String tmp = dt->_refClass + " REF";
2459                    
2460                          str = jEnv->NewStringUTF(tmp.getCString());
2461 schuur        1.6     }
2462 mark.hamzy    1.35    else
2463                       {
2464                          bool  fSuccess = false;
2465                          char *tmp      = _dataType::convertJavaTypeToChars (dt->_type, &fSuccess);
2466                    
2467                          if (!fSuccess)
2468                             return str;
2469                    
2470                          str = jEnv->NewStringUTF(tmp);
2471 schuur        1.1     }
2472 mark.hamzy    1.20 
2473 schuur        1.1     return str;
2474                    }
2475                    
2476 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDataType__1finalize
2477                          (JNIEnv *jEnv, jobject jThs, jint jDt)
2478                    {
2479                       _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2480                    
2481                       delete dt;
2482                    
2483                       DEBUG_ConvertCleanup (jint, jDt);
2484                    }
2485                    
2486 schuur        1.1  
2487                    // -------------------------------------
2488                    // ---
2489 schuur        1.6  // -		CIMArgument
2490                    // ---
2491                    // -------------------------------------
2492                    
2493                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue
2494 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2495                    {
2496                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2497                       CIMValue      *cv = new CIMValue(cp->getValue());
2498                    
2499                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2500 schuur        1.6  }
2501                    
2502                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1new
2503 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2504                    {
2505                       CIMParamValue *p = new CIMParamValue(String::EMPTY,CIMValue());
2506                    
2507                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2508 schuur        1.6  }
2509                    
2510                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS
2511 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
2512                    {
2513                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2514                       CIMParamValue *p   = new CIMParamValue(str,CIMValue());
2515                    
2516 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2517 mark.hamzy    1.20 
2518                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2519 schuur        1.6  }
2520                    
2521                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV
2522 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2523                    {
2524                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2525                       CIMValue      *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2526                       CIMParamValue *p   = new CIMParamValue(str,cv);
2527                    
2528 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2529 mark.hamzy    1.20 
2530                       return DEBUG_ConvertCToJava (CIMParamValue*, jint, p);
2531 schuur        1.6  }
2532                    
2533                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue
2534 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2535                    {
2536                       CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2537                       CIMValue      *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2538                    
2539 schuur        1.6     cp->setValue(*cv);
2540                    }
2541                    
2542                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName
2543 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2544                    {
2545                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2546                       const String  &n   = cp->getParameterName();
2547                       jstring        str = jEnv->NewStringUTF(n.getCString());
2548                    
2549 schuur        1.6     return str;
2550                    }
2551                    
2552                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName
2553 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2554                    {
2555                       CIMParamValue *cp  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2556                       const char    *str = jEnv->GetStringUTFChars(jN,NULL);
2557                       String         n(str);
2558                    
2559 schuur        1.6     cp->setParameterName(n);
2560 mark.hamzy    1.27 
2561 schuur        1.6     jEnv->ReleaseStringUTFChars(jN,str);
2562                    }
2563                    
2564                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType
2565 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2566                    {
2567 mark.hamzy    1.35    CIMParamValue *cp       = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP);
2568                       const CIMValue cv       = cp->getValue();
2569 mark.hamzy    1.20    String         ref;
2570 mark.hamzy    1.35    bool           fSuccess = false;
2571                       int            iJType   = 0;
2572                       _dataType     *type     = 0;
2573                    
2574                       iJType = _dataType::convertCTypeToJavaType (cv.getType(), &fSuccess);
2575                    
2576                       if (fSuccess)
2577                       {
2578                          type = new _dataType (iJType,
2579                                                cv.getArraySize(),
2580                                                false,
2581                                                false,
2582                                                cv.isArray(),
2583                                                ref,
2584                                                true);
2585                       }
2586 mark.hamzy    1.20 
2587                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2588 schuur        1.6  }
2589                    
2590                    // -------------------------------------
2591                    // ---
2592 schuur        1.1  // -		CIMProperty
2593                    // ---
2594                    // -------------------------------------
2595                    
2596                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
2597 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2598                    {
2599                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2600                       CIMValue    *cv = new CIMValue(cp->getValue());
2601                    
2602                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
2603 schuur        1.1  }
2604                    
2605 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
2606 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2607                    {
2608                       CIMProperty *p = new CIMProperty(CIMName(),CIMValue());
2609                    
2610                       return DEBUG_ConvertCToJava (CIMProperty*, jint, p);
2611 schuur        1.5  }
2612                    
2613 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
2614 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV)
2615                    {
2616 mark.hamzy    1.27    CIMValue    *cv  = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2617                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2618                       CIMProperty *cp  = 0;
2619                       jint         jCp = -1;
2620                    
2621 schuur        1.1     try {
2622                          if (cv->getType()!=CIMTYPE_REFERENCE)
2623 mark.hamzy    1.27       {
2624 schuur        1.1           cp=new CIMProperty(String(str),*cv);
2625 mark.hamzy    1.27       }
2626                          else
2627                          {
2628                             if (!cv->isArray())
2629                             {
2630 schuur        1.1              CIMObjectPath cop;
2631 mark.hamzy    1.27 
2632 schuur        1.1              cv->get(cop);
2633                                cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
2634                             }
2635 mark.hamzy    1.27          else
2636                             {
2637 schuur        1.1              throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
2638                             }
2639                          }
2640                    
2641 mark.hamzy    1.27       jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2642 schuur        1.1     }
2643                       Catch(jEnv);
2644 mark.hamzy    1.20 
2645 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jN,str);
2646                    
2647                       return jCp;
2648 schuur        1.1  }
2649                    
2650                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
2651 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP,jint jV)
2652                    {
2653                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2654                       CIMValue    *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2655                    
2656 schuur        1.1     cp->setValue(*cv);
2657                    }
2658                    
2659                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
2660 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2661                    {
2662                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2663                    
2664 schuur        1.1     return (jboolean)cp->isArray();
2665                    }
2666                    
2667                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
2668 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jV)
2669                    {
2670                       CIMProperty *cp   = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2671                       CIMValue    *cvin = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
2672                       CIMValue     cv   = cp->getValue();
2673                    
2674 schuur        1.1     if (cvin->isNull())
2675                          throwCIMException(jEnv,"+++ null cvin value ");
2676                       if (!cv.isArray())
2677                          throwCIMException(jEnv,"+++ not an array ");
2678                       if (cvin->getType()!=cv.getType())
2679                          throwCIMException(jEnv,"+++ type mismatch ");
2680 mark.hamzy    1.20 
2681 schuur        1.1     CIMType type=cv.getType();
2682 mark.hamzy    1.20 
2683 schuur        1.1     switch (type) {
2684                       case CIMTYPE_BOOLEAN: {
2685                             Boolean bo;
2686                             cvin->get(bo);
2687                             Array<Boolean> boarr;
2688                             cv.get(boarr);
2689                             boarr.append(bo);
2690                          }
2691                          break;
2692                       case CIMTYPE_UINT8: {
2693                             Uint8 u8;
2694                             cvin->get(u8);
2695                             Array<Uint8> u8arr;
2696                             cv.get(u8arr);
2697                             u8arr.append(u8);
2698                          }
2699                          break;
2700                       case CIMTYPE_SINT8: {
2701                             Sint8 s8;
2702                             cvin->get(s8);
2703                             Array<Sint8> s8arr;
2704 schuur        1.1           cv.get(s8arr);
2705                             s8arr.append(s8);
2706                          }
2707                          break;
2708                       case CIMTYPE_UINT16: {
2709                             Uint16 u16;
2710                             cvin->get(u16);
2711                             Array<Uint16> u16arr;
2712                             cv.get(u16arr);
2713                             u16arr.append(u16);
2714                          }
2715                          break;
2716                       case CIMTYPE_SINT16: {
2717                             Sint16 s16;
2718                             cvin->get(s16);
2719                             Array<Sint16> s16arr;
2720                             cv.get(s16arr);
2721                             s16arr.append(s16);
2722                          }
2723                          break;
2724                       case CIMTYPE_UINT32: {
2725 schuur        1.1           Uint32 u32;
2726                             cvin->get(u32);
2727                             Array<Uint32> u32arr;
2728                             cv.get(u32arr);
2729                             u32arr.append(u32);
2730                          }
2731                          break;
2732                       case CIMTYPE_SINT32: {
2733                             Sint32 s32;
2734                             cvin->get(s32);
2735                             Array<Sint32> s32arr;
2736                             cv.get(s32arr);
2737                             s32arr.append(s32);
2738                          }
2739                          break;
2740                       case CIMTYPE_UINT64: {
2741                             Uint64 u64;
2742                             cvin->get(u64);
2743                             Array<Uint64> u64arr;
2744                             cv.get(u64arr);
2745                             u64arr.append(u64);
2746 schuur        1.1        }
2747                          break;
2748                       case CIMTYPE_SINT64: {
2749                             Sint64 s64;
2750                             cvin->get(s64);
2751                             Array<Sint64> s64arr;
2752                             cv.get(s64arr);
2753                             s64arr.append(s64);
2754                          }
2755                          break;
2756                       case CIMTYPE_REAL32: {
2757                             Real32 f;
2758                             cvin->get(f);
2759                             Array<Real32> farr;
2760                             cv.get(farr);
2761                             farr.append(f);
2762                          }
2763                          break;
2764                       case CIMTYPE_REAL64: {
2765                             Real64 d;
2766                             cvin->get(d);
2767 schuur        1.1           Array<Real64> darr;
2768                             cv.get(darr);
2769                             darr.append(d);
2770                          }
2771                          break;
2772 mark.hamzy    1.35    case CIMTYPE_CHAR16: {
2773                             Char16 c16;
2774                             cvin->get(c16);
2775                             Array<Char16> c16arr;
2776                             cv.get(c16arr);
2777                             c16arr.append(c16);
2778                          }
2779                          break;
2780 schuur        1.1     case CIMTYPE_STRING: {
2781                             String str;
2782                             cvin->get(str);
2783                             Array<String> strarr;
2784                             cv.get(strarr);
2785                             strarr.append(str);
2786                          }
2787                          break;
2788 mark.hamzy    1.35    case CIMTYPE_DATETIME: {
2789                             CIMDateTime dt;
2790                             cvin->get(dt);
2791                             Array<CIMDateTime> dtarr;
2792                             cv.get(dtarr);
2793                             dtarr.append(dt);
2794                          }
2795                          break;
2796 schuur        1.1     case CIMTYPE_REFERENCE: {
2797                             CIMObjectPath ref;
2798                             cvin->get(ref);
2799                             Array<CIMObjectPath> refarr;
2800                             cv.get(refarr);
2801                             refarr.append(ref);
2802                          }
2803                          break;
2804 dave.sudlik   1.13    case CIMTYPE_OBJECT: {
2805                             CIMObject obj;
2806                             cvin->get(obj);
2807                             Array<CIMObject> objarr;
2808                             cv.get(objarr);
2809                             objarr.append(obj);
2810                          }
2811                          break;
2812 schuur        1.1     default:
2813                          throwCIMException(jEnv,"+++ unsupported type ");
2814                       }
2815                    }
2816                    
2817 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
2818 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ)
2819                    {
2820                       CIMProperty  *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2821                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
2822                    
2823 schuur        1.5     cp->addQualifier(*cq);
2824                    }
2825                    
2826 schuur        1.1  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
2827 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2828                    {
2829                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2830                       const String &n   = cp->getName().getString();
2831                       jstring       str = jEnv->NewStringUTF(n.getCString());
2832                    
2833 schuur        1.1     return str;
2834                    }
2835                    
2836 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
2837 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN)
2838                    {
2839                       CIMProperty *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2840                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
2841                    
2842 schuur        1.5     cp->setName(CIMName(str));
2843 mark.hamzy    1.27 
2844 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
2845                    }
2846                    
2847 schuur        1.1  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
2848 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2849                    {
2850                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2851                    
2852 schuur        1.1     return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
2853                    }
2854                    
2855                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
2856 mark.hamzy    1.20      (JNIEnv *jEnv, jobject jThs, jint jP)
2857                    {
2858                       CIMProperty   *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2859                       const String  &n  = cp->getReferenceClassName().getString();
2860                    
2861 schuur        1.1     jstring str=jEnv->NewStringUTF(n.getCString());
2862 mark.hamzy    1.20 
2863 schuur        1.1     return str;
2864                    }
2865                    
2866                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
2867 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2868                    {
2869 mark.hamzy    1.35    CIMProperty  *cp        = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2870                       String        ref       = cp->getReferenceClassName().getString();
2871                       bool           fSuccess = false;
2872                       int            iJType   = 0;
2873                       _dataType     *type     = 0;
2874                    
2875                       iJType = _dataType::convertCTypeToJavaType (cp->getType(), &fSuccess);
2876                    
2877                       if (fSuccess)
2878                       {
2879                          type = new _dataType (iJType,
2880                                                cp->getArraySize(),
2881                                                ref.size() ? true : false,
2882                                                false,
2883                                                cp->isArray(),
2884                                                ref,
2885                                                true);
2886                       }
2887 mark.hamzy    1.20 
2888                       return DEBUG_ConvertCToJava (_dataType*, jint, type);
2889 schuur        1.1  }
2890                    
2891 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
2892 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt)
2893                    {
2894 mark.hamzy    1.35    CIMProperty  *cp       = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2895                       _dataType    *dt       = DEBUG_ConvertJavaToC (jint, _dataType*, jDt);
2896 mark.hamzy    1.20    CIMValue      val;
2897 mark.hamzy    1.35    bool          fSuccess = false;
2898                       CIMType       cType    = CIMTYPE_BOOLEAN;
2899 mark.hamzy    1.20 
2900 mark.hamzy    1.35    cType = _dataType::convertJavaTypeToCType (dt->_type, &fSuccess);
2901 mark.hamzy    1.20 
2902 mark.hamzy    1.35    if (fSuccess)
2903                       {
2904                          val.setNullValue (cType, dt->_array);
2905 mark.hamzy    1.20 
2906 mark.hamzy    1.35       CIMProperty *np = new CIMProperty (cp->getName (), val);
2907                    
2908                          delete cp;
2909 mark.hamzy    1.20 
2910 mark.hamzy    1.35       return DEBUG_ConvertCToJava (CIMProperty*, jint, np);
2911                       }
2912                       else
2913                       {
2914                          return DEBUG_ConvertCToJava (CIMProperty*, jint, cp);
2915                       }
2916 schuur        1.5  }
2917                    
2918 schuur        1.1  JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
2919 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2920                    {
2921                       CIMProperty  *cp  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2922                       const String &n   = cp->getName().getString();
2923                       jstring       str = jEnv->NewStringUTF(n.getCString());
2924                    
2925 schuur        1.1     return str;
2926                    }
2927                    
2928                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
2929 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
2930                    {
2931                       CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2932                    
2933 schuur        1.1     delete cp;
2934 mark.hamzy    1.20 
2935                       DEBUG_ConvertCleanup (jint, jP);
2936 schuur        1.1  }
2937 schuur        1.5  
2938 mark.hamzy    1.39 /*
2939                     * Class:     org_pegasus_jmpi_CIMProperty
2940                     * Method:    _findQualifier
2941                     * Signature: (Ljava/lang/String;)I
2942                     */
2943                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1findQualifier
2944                      (JNIEnv *jEnv, jobject jThs, jint jP, jstring jQualifier)
2945                    {
2946                       CIMProperty  *cp    = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2947                       const char   *str   = jEnv->GetStringUTFChars (jQualifier, NULL);
2948                       int           index = PEG_NOT_FOUND;
2949                    
2950                       try
2951                       {
2952                          index = cp->findQualifier (CIMName (str));
2953                    
2954                          jEnv->ReleaseStringUTFChars (jQualifier, str);
2955                       }
2956                       Catch (jEnv);
2957                    
2958                       return index;
2959 mark.hamzy    1.39 }
2960                    
2961                    /*
2962                     * Class:     org_pegasus_jmpi_CIMProperty
2963                     * Method:    _getQualifier
2964                     * Signature: (I)I
2965                     */
2966                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getQualifier
2967                      (JNIEnv *jEnv, jobject jThs, jint jP, jint jIndex)
2968                    {
2969                       CIMProperty  *cp        = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP);
2970                       CIMQualifier *cq        = NULL;
2971                       CIMQualifier  qualifier;
2972                    
2973                       try
2974                       {
2975                          qualifier = cp->getQualifier ((Uint32)jIndex);
2976                          cq = new CIMQualifier (qualifier);
2977                       }
2978                       Catch (jEnv);
2979                    
2980 mark.hamzy    1.39    return DEBUG_ConvertCToJava (CIMQualifier *, jint, cq);
2981                    }
2982                    
2983                    
2984 schuur        1.5  // -------------------------------------
2985                    // ---
2986                    // -     CIMQualifierType
2987                    // ---
2988                    // -------------------------------------
2989                    
2990                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
2991 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
2992                    {
2993 schuur        1.5     CIMQualifierDecl *qual = new CIMQualifierDecl();
2994 mark.hamzy    1.20 
2995                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, qual);
2996 schuur        1.5  }
2997                    
2998                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
2999 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3000                    {
3001                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3002                    
3003 schuur        1.5     delete qt;
3004 mark.hamzy    1.20 
3005                       DEBUG_ConvertCleanup (jint, jQ);
3006 schuur        1.5  }
3007                    
3008                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
3009 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3010                    {
3011                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3012                       const String     &n   = qt->getName().getString();
3013                       jstring           str = jEnv->NewStringUTF(n.getCString());
3014                    
3015 schuur        1.5     return str;
3016                    }
3017                    
3018 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
3019 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN)
3020                    {
3021 mark.hamzy    1.24    CIMQualifierDecl *qt   = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3022                       const char       *str  = jEnv->GetStringUTFChars(jN,NULL);
3023                       jint              jret = 0;
3024 mark.hamzy    1.20 
3025 schuur        1.6     if (qt->isUninitialized())
3026 mark.hamzy    1.24    {
3027                          CIMQualifierDecl *nqt = new CIMQualifierDecl(CIMName(str),CIMValue(),CIMScope());
3028                    
3029                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
3030                       }
3031 mark.hamzy    1.20    else
3032 mark.hamzy    1.24    {
3033 mark.hamzy    1.20       qt->setName(CIMName(str));
3034 mark.hamzy    1.24 
3035                          CIMQualifierDecl *nqt = new CIMQualifierDecl(*qt);
3036                    
3037                          jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt);
3038                       }
3039                    
3040 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
3041 mark.hamzy    1.20 
3042 mark.hamzy    1.24    return jret;
3043 schuur        1.5  }
3044                    
3045                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
3046 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
3047                    {
3048                       CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
3049                       CIMValue         *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3050                    
3051 schuur        1.5     qt->setValue(*cv);
3052                    }
3053                    
3054 schuur        1.1  // -------------------------------------
3055                    // ---
3056                    // -     CIMQualifier
3057                    // ---
3058                    // -------------------------------------
3059                    
3060 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
3061 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
3062                    {
3063                       const char   *str  = jEnv->GetStringUTFChars(jN,NULL);
3064 schuur        1.5     CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue());
3065 mark.hamzy    1.20 
3066 schuur        1.5     jEnv->ReleaseStringUTFChars(jN,str);
3067 mark.hamzy    1.20 
3068                       return DEBUG_ConvertCToJava (CIMQualifier*, jint, qual);
3069 schuur        1.5  }
3070                    
3071 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
3072 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3073                    {
3074                       CIMQualifier *cq=DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3075                    
3076 schuur        1.1     delete cq;
3077 mark.hamzy    1.20 
3078                       DEBUG_ConvertCleanup (jint, jQ);
3079 schuur        1.1  }
3080                    
3081 schuur        1.5  JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
3082 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3083                    {
3084                       CIMQualifier *cq  = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3085                       const String &n   = cq->getName().getString();
3086                       jstring       str = jEnv->NewStringUTF(n.getCString());
3087                    
3088 schuur        1.5     return str;
3089                    }
3090                    
3091                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
3092 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ)
3093                    {
3094                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3095                       CIMValue     *cv = new CIMValue(cq->getValue());
3096                    
3097                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3098 schuur        1.5  }
3099                    
3100                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
3101 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV)
3102                    {
3103                       CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ);
3104                       CIMValue     *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3105                    
3106 schuur        1.5     cq->setValue(*cv);
3107                    }
3108                    
3109 schuur        1.1  // -------------------------------------
3110                    // ---
3111                    // -		CIMDateTime
3112                    // ---
3113                    // -------------------------------------
3114                    
3115                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
3116 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jN)
3117                    {
3118                       const char  *str = jEnv->GetStringUTFChars(jN,NULL);
3119                       CIMDateTime *dt  = 0;
3120                    
3121 schuur        1.1     if (strlen(str)==0)
3122                          dt=new CIMDateTime();
3123                       else
3124                          dt=new CIMDateTime(String(str));
3125 mark.hamzy    1.27 
3126 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
3127 mark.hamzy    1.20 
3128                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
3129 schuur        1.1  }
3130                    
3131                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
3132 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs)
3133                    {
3134                       CIMDateTime *dt = new CIMDateTime(CIMDateTime::getCurrentDateTime ());
3135                    
3136                       return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt);
3137 schuur        1.1  }
3138                    
3139                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
3140 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jC, jint jD)
3141                    {
3142                       CIMDateTime *ct = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jC);
3143                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jD);
3144                    
3145 schuur        1.1     return (jboolean)(ct->getDifference(*ct, *dt)>0);
3146                    }
3147                    
3148                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
3149 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
3150                    {
3151                       CIMDateTime *cdt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
3152                    
3153 schuur        1.1     delete cdt;
3154 mark.hamzy    1.20 
3155                       DEBUG_ConvertCleanup (jint, jDT);
3156 schuur        1.1  }
3157                    
3158                    // -------------------------------------
3159                    // ---
3160                    // -		CIMMethod
3161                    // ---
3162                    // -------------------------------------
3163                    
3164                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
3165 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
3166                    {
3167                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
3168                    
3169 mark.hamzy    1.24    return DEBUG_ConvertCToJava (CIMType, jint, new CIMType (cm->getType()));
3170 schuur        1.1  }
3171                    
3172                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
3173 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jM)
3174                    {
3175                       CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM);
3176                    
3177 schuur        1.1     delete cm;
3178 mark.hamzy    1.20 
3179                       DEBUG_ConvertCleanup (jint, jM);
3180 schuur        1.1  }
3181                    
3182                    // -------------------------------------
3183                    // ---
3184                    // -		CIMValue
3185                    // ---
3186                    // -------------------------------------
3187                    
3188                    
3189                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
3190 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned)
3191                    {
3192                       CIMValue *cv = NULL;
3193                    
3194                       if (notSigned)
3195                          cv=new CIMValue((Uint8)jb);
3196                       else
3197                          cv=new CIMValue((Sint8)jb);
3198                    
3199                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3200 schuur        1.1  }
3201                    
3202                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
3203 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned)
3204                    {
3205                       CIMValue *cv = NULL;
3206                    
3207                       if (notSigned)
3208                          cv=new CIMValue((Uint16)js);
3209                       else
3210                          cv=new CIMValue((Sint16)js);
3211                    
3212                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3213 schuur        1.1  }
3214                    
3215 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1makeInt
3216 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned)
3217                    {
3218                       CIMValue *cv = NULL;
3219                    
3220                       if (notSigned)
3221                          cv = new CIMValue((Uint32)ji);
3222                       else
3223                          cv = new CIMValue((Sint32)ji);
3224                    
3225                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3226 schuur        1.1  }
3227                    
3228                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
3229 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned)
3230                    {
3231                       CIMValue *cv = NULL;
3232                    
3233                       if (notSigned)
3234                          cv=new CIMValue((Uint64)jl);
3235                       else
3236                          cv=new CIMValue((Sint64)jl);
3237                    
3238                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3239 schuur        1.1  }
3240                    
3241                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
3242 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jfloat jF)
3243                    {
3244                       CIMValue *cv = new CIMValue(jF);
3245                    
3246                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3247 schuur        1.1  }
3248                    
3249                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
3250 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jdouble jD)
3251                    {
3252                       CIMValue *cv = new CIMValue(jD);
3253                    
3254                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3255 schuur        1.1  }
3256                    
3257                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
3258 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jstring jS)
3259                    {
3260                       const char *str = jEnv->GetStringUTFChars(jS,NULL);
3261                       CIMValue   *cv  = new CIMValue(String(str));
3262                    
3263 schuur        1.1     jEnv->ReleaseStringUTFChars(jS,str);
3264 mark.hamzy    1.20 
3265                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3266 schuur        1.1  }
3267                    
3268 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1cop
3269 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jR)
3270                    {
3271                       CIMObjectPath *ref = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jR);
3272                       CIMValue      *cv  = new CIMValue(*ref);
3273                    
3274                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3275 schuur        1.1  }
3276                    
3277                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
3278 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jDT)
3279                    {
3280                       CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT);
3281                       CIMValue    *cv = new CIMValue(*dt);
3282                    
3283                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3284 schuur        1.1  }
3285                    
3286 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16
3287                          (JNIEnv *jEnv, jobject jThs, jchar jChar16)
3288                    {
3289                       Char16       c16 (jChar16);
3290                       CIMValue    *cv  = new CIMValue(c16);
3291                    
3292                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3293                    }
3294                    
3295                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1object
3296                          (JNIEnv *jEnv, jobject jThs, jint jO)
3297                    {
3298                       CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jO);
3299                       CIMValue  *cv = new CIMValue(*co);
3300                    
3301                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3302                    }
3303                    
3304 schuur        1.1  JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
3305 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3306                    {
3307                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
3308                    
3309 schuur        1.1     return (jboolean)cv->isArray();
3310                    }
3311                    
3312                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
3313 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jboolean jB)
3314                    {
3315                       CIMValue *cv = new CIMValue((Boolean)jB);
3316                    
3317                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3318 schuur        1.1  }
3319                    
3320                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
3321 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned)
3322                    {
3323                       CIMValue *cv  = NULL;
3324                       jboolean  b;
3325                       jsize     len = jEnv->GetArrayLength(jshortA);
3326                       jshort   *jsA = jEnv->GetShortArrayElements(jshortA,&b);
3327                    
3328 schuur        1.1     if (notSigned) {
3329                          Array<Uint8> u8;
3330                          for (jsize i=0;i<len;i++)
3331                             u8.append((Uint8)jsA[i]);
3332                          cv=new CIMValue(u8);
3333                       }
3334                       else {
3335                          Array<Sint8> s8;
3336                          for (jsize i=0;i<len;i++)
3337                             s8.append((Sint8)jsA[i]);
3338                          cv=new CIMValue(s8);
3339                       }
3340 mark.hamzy    1.20 
3341 mark.hamzy    1.35    jEnv->ReleaseShortArrayElements(jshortA, jsA, len);
3342                    
3343 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3344 schuur        1.1  }
3345                    
3346                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
3347 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned)
3348                    {
3349                       CIMValue *cv  = NULL;
3350                       jboolean  b;
3351                       jsize     len = jEnv->GetArrayLength(jintA);
3352                       jint     *jiA = jEnv->GetIntArrayElements(jintA,&b);
3353                    
3354 schuur        1.1     if (notSigned) {
3355                          Array<Uint16> u16;
3356                          for (jsize i=0;i<len;i++)
3357                             u16.append((Uint16)jiA[i]);
3358                          cv=new CIMValue(u16);
3359                       }
3360                       else {
3361                          Array<Sint16> s16;
3362                          for (jsize i=0;i<len;i++)
3363                             s16.append((Sint16)jiA[i]);
3364                          cv=new CIMValue(s16);
3365                       }
3366 mark.hamzy    1.20 
3367 mark.hamzy    1.35    jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3368                    
3369 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3370 schuur        1.1  }
3371                    
3372                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
3373 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3374                    {
3375                       CIMValue *cv  = NULL;
3376                       jboolean  b;
3377                       jsize     len = jEnv->GetArrayLength(jlongA);
3378                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3379                    
3380 schuur        1.1     if (notSigned) {
3381                          Array<Uint32> u32;
3382                          for (jsize i=0;i<len;i++)
3383                             u32.append((Uint32)jlA[i]);
3384                          cv=new CIMValue(u32);
3385                       }
3386                       else {
3387                          Array<Sint32> s32;
3388                          for (jsize i=0;i<len;i++)
3389                             s32.append((Sint32)jlA[i]);
3390                          cv=new CIMValue(s32);
3391                       }
3392 mark.hamzy    1.20 
3393 mark.hamzy    1.35    jEnv->ReleaseLongArrayElements(jlongA, jlA, len);
3394                    
3395 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3396 schuur        1.1  }
3397                    
3398                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
3399 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned)
3400                    {
3401                       CIMValue *cv  = NULL;
3402                       jboolean  b;
3403                       jsize     len = jEnv->GetArrayLength(jlongA);
3404                       jlong    *jlA = jEnv->GetLongArrayElements(jlongA,&b);
3405                    
3406 schuur        1.1     if (notSigned) {
3407                          Array<Uint64> u64;
3408                          for (jsize i=0;i<len;i++)
3409                             u64.append((Uint64)jlA[i]);
3410                          cv=new CIMValue(u64);
3411                       }
3412                       else {
3413                          Array<Sint64> s64;
3414                          for (jsize i=0;i<len;i++)
3415                             s64.append((Sint64)jlA[i]);
3416                          cv=new CIMValue(s64);
3417                       }
3418 mark.hamzy    1.20 
3419 mark.hamzy    1.35    jEnv->ReleaseLongArrayElements(jlongA, jlA, len);
3420                    
3421 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3422 schuur        1.1  }
3423                    
3424                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
3425 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA)
3426                    {
3427                       CIMValue     *cv   = NULL;
3428                       jsize         len  = jEnv->GetArrayLength(jstringA);
3429 schuur        1.1     Array<String> strA;
3430                    
3431                       for (jsize i=0;i<len;i++) {
3432 mark.hamzy    1.27       jstring     jsA = (jstring)jEnv->GetObjectArrayElement(jstringA,i);
3433                          const char *str = jEnv->GetStringUTFChars(jsA,NULL);
3434                    
3435 schuur        1.1        strA.append(String(str));
3436 mark.hamzy    1.27 
3437 schuur        1.1        jEnv->ReleaseStringUTFChars(jsA,str);
3438                       }
3439                    
3440 mark.hamzy    1.27    cv = new CIMValue(strA);
3441 mark.hamzy    1.20 
3442                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3443 schuur        1.1  }
3444                    
3445                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
3446 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA)
3447                    {
3448                       CIMValue       *cv  = NULL;
3449                       jboolean        b;
3450                       jsize           len = jEnv->GetArrayLength(jboolA);
3451                       jboolean       *jbA = jEnv->GetBooleanArrayElements(jboolA,&b);
3452                       Array<Boolean>  bA;
3453                    
3454 schuur        1.1     for (jsize i=0;i<len;i++)
3455                          bA.append((Boolean)jbA[i]);
3456                       cv=new CIMValue(bA);
3457 mark.hamzy    1.20 
3458 mark.hamzy    1.35    jEnv->ReleaseBooleanArrayElements(jboolA, jbA, len);
3459                    
3460                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3461                    }
3462                    
3463                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1floatArray
3464                      (JNIEnv *jEnv, jobject jThs, jfloatArray jfloatA)
3465                    {
3466                       CIMValue     *cv  = NULL;
3467                       jboolean      b;
3468                       jsize         len = jEnv->GetArrayLength(jfloatA);
3469                       jfloat       *jfA = jEnv->GetFloatArrayElements(jfloatA,&b);
3470                       Array<float>  fA;
3471                    
3472                       for (jsize i=0;i<len;i++)
3473                          fA.append((float)jfA[i]);
3474                       cv=new CIMValue(fA);
3475                    
3476                       jEnv->ReleaseFloatArrayElements(jfloatA, jfA, len);
3477                    
3478                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3479 mark.hamzy    1.35 }
3480                    
3481                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1doubleArray
3482                      (JNIEnv *jEnv, jobject jThs, jdoubleArray jdoubleA)
3483                    {
3484                       CIMValue      *cv  = NULL;
3485                       jboolean       b;
3486                       jsize          len = jEnv->GetArrayLength(jdoubleA);
3487                       jdouble       *jdA = jEnv->GetDoubleArrayElements(jdoubleA,&b);
3488                       Array<double>  dA;
3489                    
3490                       for (jsize i=0;i<len;i++)
3491                          dA.append((double)jdA[i]);
3492                       cv=new CIMValue(dA);
3493                    
3494                       jEnv->ReleaseDoubleArrayElements(jdoubleA, jdA, len);
3495                    
3496 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3497 schuur        1.1  }
3498                    
3499 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1copArray
3500 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3501                    {
3502                       CIMValue             *cv  = NULL;
3503                       jboolean              b;
3504                       jsize                 len = jEnv->GetArrayLength(jintA);
3505                       jint                 *jiA = jEnv->GetIntArrayElements(jintA,&b);
3506                       Array<CIMObjectPath>  cA;
3507                    
3508 schuur        1.1     for (jsize i=0;i<len;i++)
3509                          cA.append(*((CIMObjectPath*)jiA[i]));
3510                       cv=new CIMValue(cA);
3511 mark.hamzy    1.20 
3512 mark.hamzy    1.35    jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3513                    
3514                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3515                    }
3516                    
3517                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetimeArray
3518                          (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3519                    {
3520                       CIMValue           *cv  = NULL;
3521                       jboolean            b;
3522                       jsize               len = jEnv->GetArrayLength(jintA);
3523                       jint               *jiA = jEnv->GetIntArrayElements(jintA,&b);
3524                       Array<CIMDateTime>  cA;
3525                    
3526                       for (jsize i=0;i<len;i++)
3527                          cA.append(*((CIMDateTime*)jiA[i]));
3528                       cv=new CIMValue(cA);
3529                    
3530                       jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3531                    
3532                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3533 mark.hamzy    1.35 }
3534                    
3535                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1objectArray
3536                          (JNIEnv *jEnv, jobject jThs, jintArray jintA)
3537                    {
3538                       CIMValue           *cv  = NULL;
3539                       jboolean            b;
3540                       jsize               len = jEnv->GetArrayLength(jintA);
3541                       jint               *jiA = jEnv->GetIntArrayElements(jintA,&b);
3542                       Array<CIMObject>    cA;
3543                    
3544                       for (jsize i=0;i<len;i++)
3545                          cA.append(*((CIMObject*)jiA[i]));
3546                       cv=new CIMValue(cA);
3547                    
3548                       jEnv->ReleaseIntArrayElements(jintA, jiA, len);
3549                    
3550                       return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3551                    }
3552                    
3553                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16Array
3554 mark.hamzy    1.35       (JNIEnv *jEnv, jobject jThs, jcharArray jcharA)
3555                    {
3556                       CIMValue      *cv  = NULL;
3557                       jboolean       b;
3558                       jsize          len = jEnv->GetArrayLength(jcharA);
3559                       jchar         *jcA = jEnv->GetCharArrayElements(jcharA,&b);
3560                       Array<Char16>  cA;
3561                    
3562                       for (jsize i=0;i<len;i++)
3563                          cA.append(Char16 (jcA[i]));
3564                       cv=new CIMValue(cA);
3565                    
3566                       jEnv->ReleaseCharArrayElements(jcharA, jcA, len);
3567                    
3568 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMValue*, jint, cv);
3569 schuur        1.1  }
3570                    
3571                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
3572 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jP)
3573                    {
3574 mark.hamzy    1.35    CIMValue *cv       = DEBUG_ConvertJavaToC (jint, CIMValue*, jP);
3575                       bool      fSuccess = false;
3576                       int       iJType   = 0;
3577                    
3578                       iJType = _dataType::convertCTypeToJavaType (cv->getType(), &fSuccess);
3579 mark.hamzy    1.20 
3580 mark.hamzy    1.35    return DEBUG_ConvertCToJava (int, jint, iJType);
3581 schuur        1.1  }
3582                    
3583                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
3584 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3585                    {
3586                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3587                    
3588 schuur        1.1     return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
3589                    }
3590                    
3591                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
3592 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
3593                    {
3594 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
3595                    
3596 mark.hamzy    1.20    CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
3597                    
3598 mark.hamzy    1.35    if (cv->isNull ())
3599 schuur        1.1        return NULL;
3600 mark.hamzy    1.20 
3601 mark.hamzy    1.35    CIMType type = cv->getType ();
3602 schuur        1.1  
3603 mark.hamzy    1.35    if (!cv->isArray ())
3604                       {
3605                          switch (type)
3606                          {
3607 schuur        1.1        case CIMTYPE_BOOLEAN:
3608                             Boolean bo;
3609                             cv->get(bo);
3610 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,
3611                                                     JMPIjvm::jv.BooleanNewZ,
3612                                                     bo);
3613 schuur        1.1        case CIMTYPE_SINT8:
3614                             Sint8 s8;
3615                             cv->get(s8);
3616 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.ByteClassRef,
3617                                                     JMPIjvm::jv.ByteNewB,
3618                                                     s8);
3619 schuur        1.1        case CIMTYPE_UINT8:
3620                             Uint8 u8;
3621                             cv->get(u8);
3622 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,
3623                                                     JMPIjvm::jv.UnsignedInt8NewS,
3624                                                     u8);
3625 schuur        1.1        case CIMTYPE_SINT16:
3626                             Sint16 s16;
3627                             cv->get(s16);
3628 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.ShortClassRef,
3629                                                     JMPIjvm::jv.ShortNewS,
3630                                                     s16);
3631 schuur        1.1        case CIMTYPE_UINT16:
3632                             Uint16 u16;
3633                             cv->get(u16);
3634 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,
3635                                                     JMPIjvm::jv.UnsignedInt16NewI,
3636                                                     u16);
3637 schuur        1.1        case CIMTYPE_SINT32:
3638                             Sint32 s32;
3639                             cv->get(s32);
3640 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,
3641                                                     JMPIjvm::jv.IntegerNewI,
3642                                                     s32);
3643 schuur        1.1        case CIMTYPE_UINT32:
3644                             Uint32 u32;
3645                             cv->get(u32);
3646 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,
3647                                                     JMPIjvm::jv.UnsignedInt32NewJ,
3648                                                     u32);
3649 schuur        1.1        case CIMTYPE_SINT64:
3650                             Sint64 s64;
3651                             cv->get(s64);
3652 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.LongClassRef,
3653                                                     JMPIjvm::jv.LongNewJ,
3654                                                     s64);
3655                          case CIMTYPE_UINT64:
3656                          {
3657                             Uint64 u64;
3658                             cv->get(u64);
3659                             jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef,
3660                                                                          JMPIjvm::jv.BigIntegerValueOf,
3661                                                                          u64);
3662                             return jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
3663                                                     JMPIjvm::jv.UnsignedInt64NewBi,
3664                                                     jBIG);
3665                          }
3666 schuur        1.1        case CIMTYPE_REAL32:
3667                             float f;
3668                             cv->get(f);
3669 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.FloatClassRef,
3670                                                     JMPIjvm::jv.FloatNewF,
3671                                                     f);
3672 schuur        1.1        case CIMTYPE_REAL64:
3673                             double d;
3674                             cv->get(d);
3675 mark.hamzy    1.35          return jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,
3676                                                     JMPIjvm::jv.DoubleNewD,
3677                                                     d);
3678                          case CIMTYPE_STRING:
3679                          {
3680                             String s;
3681                             cv->get(s);
3682                             return jEnv->NewStringUTF(s.getCString());
3683                          }
3684                          case CIMTYPE_REFERENCE:
3685                          {
3686                             CIMObjectPath ref;
3687                             cv->get(ref);
3688                             jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref));
3689                             return jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
3690                                                     JMPIjvm::jv.CIMObjectPathNewI,
3691                                                     jOp);
3692                          }
3693                          case CIMTYPE_CHAR16:
3694                          {
3695                             Char16 c16;
3696 mark.hamzy    1.35          cv->get(c16);
3697                             return jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,
3698                                                     JMPIjvm::jv.CharacterNewC,
3699                                                     (jchar)c16);
3700                          }
3701                          case CIMTYPE_DATETIME:
3702                          {
3703                             CIMDateTime dt;
3704                             cv->get(dt);
3705                             jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt));
3706                             return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
3707                                                     JMPIjvm::jv.CIMDateTimeNewI,
3708                                                     jDT);
3709                          }
3710                          case CIMTYPE_OBJECT:
3711                          {
3712                             CIMObject co;
3713                             cv->get(co);
3714                             if (co.isClass ())
3715                             {
3716                                jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co));
3717 mark.hamzy    1.35 
3718                                return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
3719                                                        JMPIjvm::jv.CIMObjectNewIZ,
3720                                                        jCC,
3721                                                        (jboolean)true);
3722 schuur        1.1           }
3723 mark.hamzy    1.35          else
3724                             {
3725                                jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co));
3726                    
3727                                return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
3728                                                        JMPIjvm::jv.CIMObjectNewIZ,
3729                                                        jCI,
3730                                                        (jboolean)false);
3731 schuur        1.1           }
3732 mark.hamzy    1.35       }
3733 schuur        1.1        default:
3734 mark.hamzy    1.17          throwCIMException(jEnv,"+++ unsupported type: ");
3735 schuur        1.1        }
3736                       }
3737 mark.hamzy    1.35    else
3738                       {
3739                          switch (type)
3740                          {
3741                          case CIMTYPE_BOOLEAN:
3742                          {
3743                             Array<Boolean> bo;
3744                    
3745                             cv->get(bo);
3746                    
3747                             int          s         = bo.size();
3748                             jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray (s,
3749                                                                                          JMPIjvm::jv.BooleanClassRef,
3750                                                                                          0);
3751                    
3752                             for (int i=0; i < s; i++)
3753                                jEnv->SetObjectArrayElement(jbooleanA,
3754                                                            i,
3755                                                            jEnv->NewObject (JMPIjvm::jv.BooleanClassRef,
3756                                                                             JMPIjvm::jv.BooleanNewZ,
3757                                                                             bo[i]));
3758 mark.hamzy    1.35          return jbooleanA;
3759                          }
3760                          case CIMTYPE_SINT8:
3761                          {
3762                             Array<Sint8> s8;
3763                    
3764                             cv->get(s8);
3765                    
3766                             int          s      = s8.size();
3767                             jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray (s,
3768                                                                                       JMPIjvm::jv.ByteClassRef,
3769                                                                                       0);
3770                    
3771                             for (int i=0; i < s; i++)
3772                                jEnv->SetObjectArrayElement (jbyteA,
3773                                                             i,
3774                                                             jEnv->NewObject (JMPIjvm::jv.ByteClassRef,
3775                                                                              JMPIjvm::jv.ByteNewB,
3776                                                                              s8[i]));
3777                             return jbyteA;
3778                          }
3779 mark.hamzy    1.35       case CIMTYPE_UINT8:
3780                          {
3781                             Array<Uint8> u8;
3782                    
3783                             cv->get(u8);
3784                    
3785                             int          s       = u8.size();
3786                             jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,
3787                                                                                        JMPIjvm::jv.UnsignedInt8ClassRef,
3788                                                                                        0);
3789                             for (int i=0; i < s; i++)
3790                                jEnv->SetObjectArrayElement (jshortA,
3791                                                             i,
3792                                                             jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef,
3793                                                                              JMPIjvm::jv.UnsignedInt8NewS,
3794                                                                              u8[i]));
3795                             return jshortA;
3796                          }
3797                          case CIMTYPE_SINT16:
3798                          {
3799                             Array<Sint16> s16;
3800 mark.hamzy    1.35 
3801                             cv->get(s16);
3802                    
3803                             int          s       = s16.size();
3804                             jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s,
3805                                                                                        JMPIjvm::jv.ShortClassRef,
3806                                                                                        0);
3807                    
3808 mark.hamzy    1.36          for (int i=0; i < s; i++)
3809 mark.hamzy    1.35             jEnv->SetObjectArrayElement (jshortA,
3810                                                             i,
3811                                                             jEnv->NewObject (JMPIjvm::jv.ShortClassRef,
3812                                                                              JMPIjvm::jv.ShortNewS,
3813                                                                              s16[i]));
3814                             return jshortA;
3815                          }
3816                          case CIMTYPE_UINT16:
3817                          {
3818                             Array<Uint16> u16;
3819                    
3820                             cv->get(u16);
3821                    
3822                             int          s     = u16.size();
3823                             jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,
3824                                                                                      JMPIjvm::jv.UnsignedInt16ClassRef,
3825                                                                                      0);
3826                    
3827                             for (int i=0; i < s; i++)
3828                                jEnv->SetObjectArrayElement (jintA,
3829                                                             i,
3830 mark.hamzy    1.35                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef,
3831                                                                              JMPIjvm::jv.UnsignedInt16NewI,
3832                                                                              u16[i]));
3833                             return jintA;
3834                          }
3835                          case CIMTYPE_SINT32:
3836                          {
3837                             Array<Sint32> s32;
3838                    
3839                             cv->get(s32);
3840                    
3841                             int          s     = s32.size();
3842                             jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s,
3843                                                                                      JMPIjvm::jv.IntegerClassRef,
3844                                                                                      0);
3845                    
3846 mark.hamzy    1.36          for (int i=0; i < s; i++)
3847 mark.hamzy    1.35             jEnv->SetObjectArrayElement (jintA,
3848                                                             i,
3849                                                             jEnv->NewObject (JMPIjvm::jv.IntegerClassRef,
3850                                                                              JMPIjvm::jv.IntegerNewI,
3851                                                                              s32[i]));
3852                             return jintA;
3853                          }
3854                          case CIMTYPE_UINT32:
3855                          {
3856                             Array<Uint32> u32;
3857                    
3858                             cv->get(u32);
3859                    
3860                             int          s      = u32.size();
3861                             jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s,
3862                                                                                       JMPIjvm::jv.UnsignedInt32ClassRef,
3863                                                                                       0);
3864                    
3865                             for (int i=0; i < s; i++)
3866                                jEnv->SetObjectArrayElement (jlongA,
3867                                                             i,
3868 mark.hamzy    1.35                                          jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef,
3869                                                                              JMPIjvm::jv.UnsignedInt32NewJ,
3870                                                                              u32[i]));
3871                             return jlongA;
3872                          }
3873                          case CIMTYPE_SINT64:
3874                          {
3875                             Array<Sint64> s64;
3876                    
3877                             cv->get(s64);
3878                    
3879                             int          s      = s64.size();
3880                             jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s,
3881                                                                                       JMPIjvm::jv.LongClassRef,
3882                                                                                       0);
3883                    
3884                             for (int i=0; i < s; i++)
3885                                jEnv->SetObjectArrayElement (jlongA,
3886                                                             i,
3887                                                             jEnv->NewObject (JMPIjvm::jv.LongClassRef,
3888                                                                              JMPIjvm::jv.LongNewJ,
3889 mark.hamzy    1.35                                                           s64[i]));
3890                             return jlongA;
3891                          }
3892 schuur        1.1        case CIMTYPE_UINT64:
3893 mark.hamzy    1.35       {
3894                             Array<Uint64> u64;
3895                    
3896                             cv->get(u64);
3897                    
3898                             int          s     = u64.size();
3899                             jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray (s,
3900                                                                                      JMPIjvm::jv.UnsignedInt64ClassRef,
3901                                                                                      0);
3902                    
3903                             for (int i=0; i < s; i++)
3904                             {
3905                                jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef,
3906                                                                             JMPIjvm::jv.BigIntegerValueOf,
3907                                                                             u64[i]);
3908                    
3909                                jEnv->SetObjectArrayElement (ju64A,
3910                                                             i,
3911                                                             jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef,
3912                                                                              JMPIjvm::jv.UnsignedInt64NewBi,
3913                                                                              jBIG));
3914 schuur        1.1           }
3915 mark.hamzy    1.35          return ju64A;
3916                          }
3917                          case CIMTYPE_REAL32:
3918                          {
3919                             Array<Real32> r32;
3920                    
3921                             cv->get(r32);
3922                    
3923                             int          s       = r32.size();
3924                             jobjectArray jfloatA = (jobjectArray)jEnv->NewObjectArray (s,
3925                                                                                        JMPIjvm::jv.FloatClassRef,
3926                                                                                        0);
3927                    
3928                             for (int i=0; i < s; i++)
3929                                jEnv->SetObjectArrayElement (jfloatA,
3930                                                             i,
3931                                                             jEnv->NewObject (JMPIjvm::jv.FloatClassRef,
3932                                                                              JMPIjvm::jv.FloatNewF,
3933                                                                              r32[i]));
3934                             return jfloatA;
3935                          }
3936 mark.hamzy    1.35       case CIMTYPE_REAL64:
3937                          {
3938                             Array<Real64> r64;
3939                    
3940                             cv->get(r64);
3941                    
3942                             int          s        = r64.size();
3943                             jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray (s,
3944                                                                                         JMPIjvm::jv.DoubleClassRef,
3945                                                                                         0);
3946                    
3947                             for (int i=0; i < s; i++)
3948                                jEnv->SetObjectArrayElement (jdoubleA,
3949                                                             i,
3950                                                             jEnv->NewObject (JMPIjvm::jv.DoubleClassRef,
3951                                                                              JMPIjvm::jv.DoubleNewD,
3952                                                                              r64[i]));
3953                             return jdoubleA;
3954                          }
3955                          case CIMTYPE_STRING:
3956                          {
3957 mark.hamzy    1.35          Array<String> str;
3958                    
3959                             cv->get(str);
3960                    
3961                             int          s        = str.size();
3962                             jobjectArray jstringA = (jobjectArray)jEnv->NewObjectArray (s,
3963                                                                                         JMPIjvm::jv.StringClassRef,
3964                                                                                         0);
3965                    
3966                             for (int i=0; i < s; i++)
3967                                jEnv->SetObjectArrayElement (jstringA,
3968                                                             i,
3969                                                             jEnv->NewStringUTF (str[i].getCString()));
3970                             return jstringA;
3971                          }
3972                          case CIMTYPE_REFERENCE:
3973                          {
3974                             Array<CIMObjectPath> ref;
3975                    
3976                             cv->get(ref);
3977                    
3978 mark.hamzy    1.35          int          s     = ref.size();
3979                             jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray (s,
3980                                                                                      JMPIjvm::jv.CIMObjectPathClassRef,
3981                                                                                      0);
3982                    
3983                             for (int i=0; i < s; i++)
3984                             {
3985                                jint jOP = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref[i]));
3986                    
3987                                jEnv->SetObjectArrayElement (jrefA,
3988                                                             i,
3989                                                             jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
3990                                                                              JMPIjvm::jv.CIMObjectPathNewI,
3991                                                                              jOP));
3992 schuur        1.1           }
3993 mark.hamzy    1.35          return jrefA;
3994                          }
3995 schuur        1.1        case CIMTYPE_CHAR16:
3996 mark.hamzy    1.35       {
3997                             Array<Char16> c16;
3998                    
3999                             cv->get(c16);
4000                    
4001                             int          s     = c16.size();
4002                             jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray (s,
4003                                                                                      JMPIjvm::jv.CharacterClassRef,
4004                                                                                      0);
4005                    
4006                             for (int i=0; i < s; i++)
4007                                jEnv->SetObjectArrayElement (jc16A,
4008                                                             i,
4009                                                             jEnv->NewObject (JMPIjvm::jv.CharacterClassRef,
4010                                                                              JMPIjvm::jv.CharacterNewC,
4011                                                                              (jchar)c16[i]));
4012                    
4013                             return jc16A;
4014                          }
4015 schuur        1.1        case CIMTYPE_DATETIME:
4016 mark.hamzy    1.35       {
4017                             Array<CIMDateTime> dt;
4018                    
4019                             cv->get(dt);
4020                    
4021                             int          s    = dt.size();
4022                             jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray (s,
4023                                                                                     JMPIjvm::jv.CIMDateTimeClassRef,
4024                                                                                     0);
4025                    
4026                             for (int i=0; i < s; i++)
4027                             {
4028                                jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt[i]));
4029                    
4030                                jEnv->SetObjectArrayElement (jdtA,
4031                                                             i,
4032                                                             jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef,
4033                                                                              JMPIjvm::jv.CIMDateTimeNewI,
4034                                                                              jDT));
4035                             }
4036                             return jdtA;
4037 mark.hamzy    1.35       }
4038 dave.sudlik   1.13       case CIMTYPE_OBJECT:
4039 mark.hamzy    1.35       {
4040                             Array<CIMObject> co;
4041                    
4042                             cv->get(co);
4043                    
4044                             int          s    = co.size();
4045                             jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray (s,
4046                                                                                     JMPIjvm::jv.CIMObjectClassRef,
4047                                                                                     0);
4048                    
4049                             for (int i=0; i < s; i++)
4050                             {
4051                                if (co[i].isClass ())
4052                                {
4053                                   jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co[i]));
4054                    
4055                                   jEnv->SetObjectArrayElement (jcoA,
4056                                                                i,
4057                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
4058                                                                                 JMPIjvm::jv.CIMObjectNewIZ,
4059                                                                                 jCC,
4060 mark.hamzy    1.35                                                              (jboolean)true));
4061                                }
4062                                else
4063                                {
4064                                   jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co[i]));
4065                    
4066                                   jEnv->SetObjectArrayElement (jcoA,
4067                                                                i,
4068                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef,
4069                                                                                 JMPIjvm::jv.CIMObjectNewIZ,
4070                                                                                 jCI,
4071                                                                                 (jboolean)false));
4072                                }
4073                             }
4074                             return jcoA;
4075                          }
4076 schuur        1.1        default:
4077 mark.hamzy    1.35          throwCIMException(jEnv,"+++ unsupported type: ");
4078 schuur        1.1        }
4079                       }
4080 mark.hamzy    1.20 
4081 schuur        1.1     return NULL;
4082                    }
4083                    
4084                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
4085 mark.hamzy    1.20       (JNIEnv *jEnv, jobject jThs, jint jV)
4086                    {
4087                       CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
4088                    
4089                       delete cv;
4090                    
4091                       DEBUG_ConvertCleanup (jint, jV);
4092 schuur        1.1  }
4093                    
4094                    // -------------------------------------
4095                    // ---
4096                    // -		CIMNameSpace
4097                    // ---
4098                    // -------------------------------------
4099                    
4100                    _nameSpace::_nameSpace() {
4101                       port_=0;
4102                       hostName_=System::getHostName();
4103                       nameSpace_="root/cimv2";
4104                    }
4105                    
4106                    _nameSpace::_nameSpace(String hn) {
4107                       port_=0;
4108                       hostName_=hn;
4109                       nameSpace_="root/cimv2";
4110                    }
4111                    
4112                    _nameSpace::_nameSpace(String hn, String ns) {
4113 schuur        1.1      port_=0;
4114                        hostName_=hn;
4115                        nameSpace_=ns;
4116                    }
4117                    
4118                    int _nameSpace::port() {
4119                       if (port_) return port_;
4120                       port_=5988;
4121                       if (hostName_.subString(0,7)=="http://") {
4122                          protocol_="http://";
4123                          hostName_=hostName_.subString(7);
4124                       }
4125                       Sint32 p=hostName_.reverseFind(':');
4126                       if (p>=0) {
4127 kumpf         1.25       if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9'))
4128 schuur        1.1           port_=atoi(hostName_.subString(p+1).getCString());
4129                          hostName_.remove(p);
4130                       }
4131                       return port_;
4132                    }
4133                    
4134                    String _nameSpace::hostName() {
4135                       port();
4136                       return hostName_;
4137                    }
4138                    
4139                    String _nameSpace::nameSpace() {
4140                       return nameSpace_;
4141                    }
4142                    
4143                    
4144                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
4145 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs)
4146                    {
4147                      return DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace());
4148 schuur        1.1  }
4149                    
4150                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
4151 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn)
4152                    {
4153                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
4154                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(hn));
4155                    
4156 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
4157 mark.hamzy    1.20 
4158 schuur        1.1     return cInst;
4159                    }
4160                    
4161                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
4162 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs)
4163                    {
4164                       const char *hn    = jEnv->GetStringUTFChars(jHn,NULL);
4165                       const char *ns    = jEnv->GetStringUTFChars(jNs,NULL);
4166                       jint        cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(String(hn),String(ns)));
4167                    
4168 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,hn);
4169                       jEnv->ReleaseStringUTFChars(jNs,ns);
4170 mark.hamzy    1.20 
4171 schuur        1.1     return cInst;
4172                    }
4173                    
4174                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
4175 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
4176                    {
4177                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4178                       const String &hn  = cNs->hostName_;
4179                       jstring       str = jEnv->NewStringUTF(hn.getCString());
4180                    
4181 schuur        1.1     return str;
4182                    }
4183                    
4184                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
4185 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs)
4186                    {
4187                       _nameSpace   *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4188                       const String &ns  = cNs->nameSpace_;
4189                       jstring       str = jEnv->NewStringUTF(ns.getCString());
4190                    
4191 schuur        1.1     return str;
4192                    }
4193                    
4194                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
4195 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn)
4196                    {
4197                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4198                       const char *str = jEnv->GetStringUTFChars(jHn,NULL);
4199                    
4200 schuur        1.1     cNs->port_=0;
4201                       cNs->hostName_=str;
4202 mark.hamzy    1.27 
4203 schuur        1.1     jEnv->ReleaseStringUTFChars(jHn,str);
4204                    }
4205                    
4206                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
4207 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN)
4208                    {
4209 mark.hamzy    1.22    _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4210 mark.hamzy    1.20    const char *str = jEnv->GetStringUTFChars(jN,NULL);
4211                    
4212 schuur        1.1     cNs->nameSpace_=str;
4213 mark.hamzy    1.27 
4214 schuur        1.1     jEnv->ReleaseStringUTFChars(jN,str);
4215                    }
4216                    
4217 mark.hamzy    1.22 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1finalize
4218                       (JNIEnv *jEnv, jobject jThs, jint jNs)
4219                    {
4220                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4221                    
4222                       delete cNs;
4223                    
4224                       DEBUG_ConvertCleanup (jint, jNs);
4225                    }
4226                    
4227 schuur        1.1  // -------------------------------------
4228                    // ---
4229                    // -		Enumerators
4230                    // ---
4231                    // -------------------------------------
4232                    
4233 schuur        1.4  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
4234 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4235                    {
4236                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
4237                    
4238                       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass((*enm)[pos]));
4239 schuur        1.4  }
4240                    
4241                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
4242 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4243                    {
4244                       Array<CIMClass> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMClass>*, jEnum);
4245                    
4246 schuur        1.4     return enm->size();
4247                    }
4248                    
4249 schuur        1.1  
4250                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
4251 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4252                    {
4253                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
4254                    
4255                       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance((*enm)[pos]));
4256 schuur        1.1  }
4257                    
4258                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
4259 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4260                    {
4261                       Array<CIMInstance> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMInstance>*, jEnum);
4262                    
4263 schuur        1.1     return enm->size();
4264                    }
4265                    
4266 mark.hamzy    1.20 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
4267                      (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4268                    {
4269                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
4270 schuur        1.1  
4271 mark.hamzy    1.20    return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath((*enm)[pos]));
4272 schuur        1.1  }
4273                    
4274                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
4275 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4276                    {
4277                       Array<CIMObjectPath> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMObjectPath>*, jEnum);
4278                    
4279 schuur        1.1     return enm->size();
4280                    }
4281                    
4282 schuur        1.5  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
4283 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos)
4284                    {
4285                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
4286                    
4287                       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, new CIMQualifierDecl((*enm)[pos]));
4288 schuur        1.5  }
4289                    
4290                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
4291 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jEnum)
4292                    {
4293                       Array<CIMQualifierDecl> *enm = DEBUG_ConvertJavaToC (jint, Array<CIMQualifierDecl>*, jEnum);
4294                    
4295 schuur        1.5     return enm->size();
4296                    }
4297                    
4298 schuur        1.1  // -------------------------------------
4299                    // ---
4300                    // -		CIMClient
4301                    // ---
4302                    // -------------------------------------
4303                    
4304 schuur        1.5  void checkNs(CIMObjectPath *cop, jint jNs) {
4305                       if (cop->getNameSpace().isNull()) {
4306 mark.hamzy    1.30       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4307                    
4308                          cop->setNameSpace(CIMNamespaceName(cNs->nameSpace()));
4309 schuur        1.5     }
4310                    }
4311                    
4312 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
4313 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw)
4314                    {
4315                       _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs);
4316 mark.hamzy    1.27    const char *un  = jEnv->GetStringUTFChars(jUn,NULL);
4317                       const char *pw  = jEnv->GetStringUTFChars(jPw,NULL);
4318                       jint        jCc = 0;
4319 schuur        1.5  
4320 schuur        1.1     try {
4321                          CIMClient *cc=new CIMClient();
4322 mark.hamzy    1.27 
4323 schuur        1.1        cc->connect(cNs->hostName(),cNs->port(),un,pw);
4324 mark.hamzy    1.27 
4325                          jCc = DEBUG_ConvertCToJava (CIMClient*, jint, cc);
4326 schuur        1.1     }
4327 schuur        1.5     Catch(jEnv);
4328 mark.hamzy    1.27 
4329                       jEnv->ReleaseStringUTFChars(jUn,un);
4330                       jEnv->ReleaseStringUTFChars(jPw,pw);
4331                    
4332                       return jCc;
4333 schuur        1.1  }
4334                    
4335                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
4336 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc)
4337                    {
4338                       CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4339                    
4340 schuur        1.1     try {
4341                          cCc->disconnect();
4342                       }
4343 schuur        1.5     Catch(jEnv);
4344 schuur        1.1  }
4345 schuur        1.5  
4346 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
4347 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo,
4348 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4349                    {
4350                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4351                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4352                       CIMPropertyList  pl=getList(jEnv,jPl);
4353                    
4354 schuur        1.1     try {
4355 schuur        1.5        checkNs(cop,jNs);
4356 schuur        1.6        CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
4357                                    (Boolean)iq,(Boolean)ic,pl);
4358 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls));
4359 schuur        1.1     }
4360 schuur        1.5     Catch(jEnv);
4361 mark.hamzy    1.20 
4362 schuur        1.1     return 0;
4363                    }
4364 schuur        1.3  
4365                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
4366 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4367                    {
4368                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4369                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4370                    
4371 schuur        1.3     try {
4372 schuur        1.5        checkNs(cop,jNs);
4373 schuur        1.3        cCc->deleteClass(cop->getNameSpace(),cop->getClassName());
4374                       }
4375 schuur        1.5     Catch(jEnv);
4376 schuur        1.3  }
4377                    
4378                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
4379 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl)
4380                    {
4381                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4382                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4383                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
4384 schuur        1.3  
4385                       try {
4386                          cCc->createClass(cop->getNameSpace(),*cl);
4387                       }
4388 schuur        1.5     Catch(jEnv);
4389 schuur        1.3  }
4390                    
4391                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
4392 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl)
4393                    {
4394                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4395                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4396                       CIMClass      *cl  = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl);
4397 schuur        1.3  
4398 schuur        1.1     try {
4399 schuur        1.5       checkNs(cop,jNs);
4400 schuur        1.3       cCc->modifyClass(cop->getNameSpace(),*cl);
4401 schuur        1.1     }
4402 schuur        1.5     Catch(jEnv);
4403 schuur        1.1  }
4404 schuur        1.3  
4405                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses
4406 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic)
4407                    {
4408                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4409                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4410                    
4411 schuur        1.1     try {
4412 schuur        1.5        checkNs(cop,jNs);
4413 schuur        1.3        Array<CIMClass> enm=cCc->enumerateClasses(
4414 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic);
4415 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMClass>*, jint, new Array<CIMClass>(enm));
4416 schuur        1.1     }
4417 schuur        1.5     Catch(jEnv);
4418 mark.hamzy    1.20 
4419 schuur        1.1     return 0;
4420                    }
4421                    
4422 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
4423 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
4424                    {
4425                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4426                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4427                       CIMNamespaceName  ns  = cop->getNameSpace();
4428                    
4429 schuur        1.1     try {
4430 schuur        1.5        checkNs(cop,jNs);
4431 schuur        1.7        Array<CIMName> enm=cCc->enumerateClassNames(ns,cop->getClassName(),(Boolean)deep);
4432 schuur        1.3        Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
4433                          for (int i=0,m=enm.size(); i<m; i++) {
4434                             enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
4435                          }
4436 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, enmop);
4437 schuur        1.3     }
4438 schuur        1.5     Catch(jEnv);
4439 mark.hamzy    1.20 
4440 schuur        1.3     return 0;
4441                    }
4442                    
4443 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers
4444 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop)
4445                    {
4446                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4447                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4448                    
4449 schuur        1.6     try {
4450                          checkNs(cop,jNs);
4451 mark.hamzy    1.24 
4452                          Array<CIMQualifierDecl> enm=cCc->enumerateQualifiers(cop->getNameSpace());
4453                    
4454 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMQualifierDecl>*, jint, new Array<CIMQualifierDecl>(enm));
4455 schuur        1.6     }
4456                       Catch(jEnv);
4457 mark.hamzy    1.20 
4458 schuur        1.6     return 0;
4459                    }
4460                    
4461 schuur        1.3  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
4462 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo,
4463 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4464                    {
4465                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4466                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4467                       CIMPropertyList   pl  = getList(jEnv,jPl);
4468 schuur        1.5  
4469 schuur        1.3     try {
4470 schuur        1.5        checkNs(cop,jNs);
4471 mark.hamzy    1.24 
4472                          CIMInstance inst=cCc->getInstance(cop->getNameSpace(),
4473                                                            *cop,
4474                                                            (Boolean)lo,
4475                                                            (Boolean)iq,
4476                                                            (Boolean)ic,
4477                                                            pl);
4478                    
4479 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(inst));
4480 schuur        1.1     }
4481 schuur        1.5     Catch(jEnv);
4482 mark.hamzy    1.20 
4483 schuur        1.1     return 0;
4484                    }
4485                    
4486 schuur        1.3  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
4487 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4488                    {
4489                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4490                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4491                    
4492 schuur        1.3     try {
4493 schuur        1.5        checkNs(cop,jNs);
4494 schuur        1.3        cCc->deleteInstance(cop->getNameSpace(),*cop);
4495                       }
4496 schuur        1.5     Catch(jEnv);
4497 schuur        1.3  }
4498                    
4499 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
4500 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi)
4501                    {
4502                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4503                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4504                       CIMInstance   *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
4505                    
4506 schuur        1.1     try {
4507 schuur        1.5        checkNs(cop,jNs);
4508 schuur        1.6        ci->setPath(*cop);
4509 schuur        1.1        CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
4510 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj));
4511 schuur        1.1     }
4512 schuur        1.5     Catch(jEnv);
4513 mark.hamzy    1.20 
4514 schuur        1.5     return 0;
4515 schuur        1.1  }
4516 schuur        1.3  
4517 schuur        1.6  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance
4518                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi,
4519 mark.hamzy    1.20          jboolean iq, jobjectArray jPl)
4520                    {
4521                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4522                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4523                       CIMInstance     *ci  = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
4524                       CIMPropertyList  pl  = getList(jEnv,jPl);
4525                    
4526 schuur        1.1     try {
4527 schuur        1.6        checkNs(cop,jNs);
4528                          ci->setPath(*cop);
4529                          cCc->modifyInstance(cop->getNameSpace(),*ci,(Boolean)iq,pl);
4530 schuur        1.1     }
4531 schuur        1.5     Catch(jEnv);
4532 schuur        1.3  }
4533                    
4534                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
4535 schuur        1.6    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo,
4536 mark.hamzy    1.20          jboolean iq, jboolean ic, jobjectArray jPl)
4537                    {
4538                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4539                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4540                       CIMPropertyList  pl  = getList(jEnv,jPl);
4541                    
4542 schuur        1.3     try {
4543 schuur        1.5        checkNs(cop,jNs);
4544 schuur        1.6        CIMPropertyList props;
4545 schuur        1.3        Array<CIMInstance> enm=cCc->enumerateInstances(
4546 schuur        1.6           cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic,pl);
4547 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, new Array<CIMInstance>(enm));
4548 schuur        1.3     }
4549 schuur        1.5     Catch(jEnv);
4550 mark.hamzy    1.20 
4551 schuur        1.3     return 0;
4552                    }
4553                    
4554                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
4555 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep)
4556                    {
4557                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4558                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4559                    
4560 schuur        1.3     try {
4561 schuur        1.5        checkNs(cop,jNs);
4562 schuur        1.3        Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
4563                             cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
4564 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4565 schuur        1.3     }
4566 schuur        1.5     Catch(jEnv);
4567 mark.hamzy    1.20 
4568 schuur        1.5     return 0;
4569                    }
4570                    
4571                    
4572                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
4573 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4574                    {
4575                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4576                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4577                    
4578 schuur        1.5     try {
4579                          checkNs(cop,jNs);
4580                          CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName()));
4581 mark.hamzy    1.20       return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, val);
4582 schuur        1.3     }
4583 schuur        1.5     Catch(jEnv);
4584 mark.hamzy    1.20 
4585 schuur        1.3     return 0;
4586                    }
4587                    
4588 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
4589 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop)
4590                    {
4591                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4592                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4593                    
4594 schuur        1.5     try {
4595                          checkNs(cop,jNs);
4596                          cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName());
4597                       }
4598                       Catch(jEnv);
4599                    }
4600                    
4601                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
4602 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ)
4603                    {
4604                       CIMClient        *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4605                       CIMObjectPath    *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4606                       CIMQualifierDecl *qt  = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ);
4607                    
4608 schuur        1.5     try {
4609                          checkNs(cop,jNs);
4610                          cCc->setQualifier(cop->getNameSpace(),*qt);
4611                       }
4612                       Catch(jEnv);
4613                    }
4614                    
4615 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
4616 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn)
4617                    {
4618                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4619                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4620                       const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
4621                       CIMName        pName(str);
4622 mark.hamzy    1.27    jint           jCv = 0;
4623 mark.hamzy    1.20 
4624 schuur        1.3     try {
4625 schuur        1.5        checkNs(cop,jNs);
4626 mark.hamzy    1.27 
4627                          CIMValue *val = new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
4628                    
4629                          jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4630 schuur        1.3     }
4631 schuur        1.5     Catch(jEnv);
4632 mark.hamzy    1.20 
4633 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jPn,str);
4634                    
4635                       return jCv;
4636 schuur        1.3  }
4637 schuur        1.5  
4638 schuur        1.1  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
4639 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV)
4640                    {
4641                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4642                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4643 mark.hamzy    1.22    CIMValue      *val = DEBUG_ConvertJavaToC (jint, CIMValue*, jV);
4644 mark.hamzy    1.20    const char    *str = jEnv->GetStringUTFChars(jPn,NULL);
4645                       CIMName        pName(str);
4646                    
4647 schuur        1.3     try {
4648 schuur        1.5        checkNs(cop,jNs);
4649 schuur        1.3        cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
4650                       }
4651 schuur        1.5     Catch(jEnv);
4652 mark.hamzy    1.27 
4653                       jEnv->ReleaseStringUTFChars(jPn,str);
4654 schuur        1.3  }
4655                    
4656                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
4657 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut)
4658                    {
4659 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
4660                    
4661 mark.hamzy    1.27    CIMClient            *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4662                       CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4663                       const char           *str = jEnv->GetStringUTFChars(jMn,NULL);
4664                       CIMName               method(str);
4665                       jint                  jCv = 0;
4666                       Array<CIMParamValue>  in;
4667                       Array<CIMParamValue>  out;
4668 schuur        1.3  
4669 mark.hamzy    1.26    for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i<m; i++) {
4670 schuur        1.3         JMPIjvm::checkException(jEnv);
4671 mark.hamzy    1.20 
4672 mark.hamzy    1.26        jobject jProp=jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i);
4673 schuur        1.3         JMPIjvm::checkException(jEnv);
4674 mark.hamzy    1.20 
4675 mark.hamzy    1.26        jint         jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
4676 mark.hamzy    1.20        CIMProperty *p  = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp);
4677                    
4678 schuur        1.3         JMPIjvm::checkException(jEnv);
4679 mark.hamzy    1.20 
4680 schuur        1.3         in.append(CIMParamValue(p->getName().getString(),p->getValue()));
4681                       }
4682 mark.hamzy    1.27 
4683 schuur        1.3     try {
4684 schuur        1.5        checkNs(cop,jNs);
4685 mark.hamzy    1.27 
4686                          CIMValue *val = new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
4687 schuur        1.3  
4688                          for (int i=0,m=out.size(); i<m; i++) {
4689 mark.hamzy    1.20          const CIMParamValue &parm = out[i];
4690                             const CIMValue       v    = parm.getValue();
4691                             CIMProperty         *p    = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
4692                             jint                 jp   = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
4693 mark.hamzy    1.26          jobject              prop = jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp);
4694 mark.hamzy    1.20 
4695 mark.hamzy    1.26          jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop);
4696 schuur        1.3        }
4697 mark.hamzy    1.27 
4698                          jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4699 mark.hamzy    1.20    }
4700 schuur        1.5     Catch(jEnv);
4701 mark.hamzy    1.20 
4702 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jMn,str);
4703                    
4704                       return jCv;
4705 schuur        1.3  }
4706                    
4707 schuur        1.6  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
4708                      (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,
4709 mark.hamzy    1.20         jobjectArray jIn, jobjectArray jOut)
4710                    {
4711 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
4712                    
4713 mark.hamzy    1.27    CIMClient            *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4714                       CIMObjectPath        *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4715                       const char           *str = jEnv->GetStringUTFChars(jMn,NULL);
4716                       CIMName               method(str);
4717                       jint                  jCv = 0;
4718 schuur        1.7     Array<CIMParamValue> in;
4719                       Array<CIMParamValue> out;
4720                    
4721                       for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
4722                           JMPIjvm::checkException(jEnv);
4723 mark.hamzy    1.20 
4724 schuur        1.7         jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
4725                           JMPIjvm::checkException(jEnv);
4726 mark.hamzy    1.20 
4727 mark.hamzy    1.26        jint           jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
4728 mark.hamzy    1.20        CIMParamValue *p  = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp);
4729                    
4730 schuur        1.7         JMPIjvm::checkException(jEnv);
4731 mark.hamzy    1.20 
4732 schuur        1.7         in.append(*p);
4733                       }
4734                       try {
4735                          checkNs(cop,jNs);
4736                          CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
4737                    
4738                          for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
4739 mark.hamzy    1.24          CIMParamValue *parm  = new CIMParamValue (out[i]);
4740                             jint           jParm = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
4741                    
4742                             jEnv->SetObjectArrayElement(jOut,
4743                                                         i,
4744 mark.hamzy    1.26                                      jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm));
4745 schuur        1.7        }
4746 mark.hamzy    1.27       jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val);
4747 schuur        1.7     }
4748                       Catch(jEnv);
4749 mark.hamzy    1.20 
4750 mark.hamzy    1.27    jEnv->ReleaseStringUTFChars(jMn,str);
4751                    
4752                       return jCv;
4753 schuur        1.6  }
4754                    
4755 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
4756 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl)
4757                    {
4758                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4759                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4760                       const char    *str = jEnv->GetStringUTFChars(jQuery,NULL);
4761                       String         query(str);
4762 schuur        1.3  
4763 mark.hamzy    1.30 /* @NOTE
4764 mark.hamzy    1.16 ** This does not work for some reason on the client java code:
4765 mark.hamzy    1.18 **   DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::Java_org_pegasus_jmpi_CIMClient__1execQuery: jEnv = "<<PEGASUS_STD(hex)<<(int)jEnv<<", jThs = "<<(int)jThs<<PEGASUS_STD(dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD(hex)<<(int)jQuery<<", jQl = "<<(int)jQl<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
4766 mark.hamzy    1.16 ** What does work is:
4767                    **   printf ("This is a test\n");
4768 mark.hamzy    1.30 **
4769                    ** To debug these JNI functions insert the following:
4770                    **    if (getenv ("PEGASUS_JMPI_GDB"))
4771                    **    {
4772                    **       bool fLoop = true;
4773                    **       int  i     = 0;
4774                    **
4775                    **       while (fLoop)
4776                    **       {
4777                    **          i = 1;
4778                    **       }
4779                    **    }
4780                    ** Export the variable PEGASUS_JMPI_GDB=1.
4781                    ** Start gdb in another process.
4782                    **    shell ps -efl
4783                    **    att <ps number>
4784                    **    set fLoop = 0
4785 mark.hamzy    1.16 */
4786                    
4787 schuur        1.3     jEnv->ReleaseStringUTFChars(jQuery,str);
4788 mark.hamzy    1.16 
4789 schuur        1.3     str=jEnv->GetStringUTFChars(jQl,NULL);
4790 mark.hamzy    1.27 
4791 schuur        1.3     String ql(str);
4792 mark.hamzy    1.16 
4793 schuur        1.3     jEnv->ReleaseStringUTFChars(jQl,str);
4794                    
4795                       try {
4796 schuur        1.5        checkNs(cop,jNs);
4797 mark.hamzy    1.20       Array<CIMObject> enm=cCc->execQuery(cop->getNameSpace(),ql,query);
4798 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4799                          for (int i=0,m=enm.size(); i<m; i++) {
4800                             enmInst->append(CIMInstance(enm[i]));
4801                          }
4802 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4803 schuur        1.3     }
4804 schuur        1.5     Catch(jEnv);
4805 mark.hamzy    1.20 
4806 schuur        1.3     return 0;
4807                    }
4808                    
4809 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
4810 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4811 mark.hamzy    1.20    jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole)
4812                    {
4813                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4814                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4815                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4816                       CIMName        assocClass(str);
4817 schuur        1.3  
4818                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4819                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4820 mark.hamzy    1.20 
4821 schuur        1.3     CIMName resultClass(str);
4822 mark.hamzy    1.20 
4823 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4824                       str=jEnv->GetStringUTFChars(jRole,NULL);
4825 mark.hamzy    1.20 
4826 schuur        1.3     String role(str);
4827 mark.hamzy    1.20 
4828 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4829                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4830 mark.hamzy    1.20 
4831 schuur        1.3     String resultRole(str);
4832 mark.hamzy    1.20 
4833 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4834                    
4835                       try {
4836 schuur        1.5        checkNs(cop,jNs);
4837 schuur        1.3        Array<CIMObjectPath> enm=cCc->associatorNames(
4838                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
4839 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4840 schuur        1.3     }
4841 schuur        1.5     Catch(jEnv);
4842 mark.hamzy    1.20 
4843 schuur        1.3     return 0;
4844                    }
4845                    
4846 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
4847 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4848 schuur        1.3     jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
4849 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
4850                    {
4851                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4852                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4853                       CIMPropertyList  pl  = getList(jEnv,jPl);
4854                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4855                       CIMName          assocClass(str);
4856 schuur        1.3  
4857                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4858                       str=jEnv->GetStringUTFChars(jResultClass,NULL);
4859 mark.hamzy    1.20 
4860 schuur        1.3     CIMName resultClass(str);
4861 mark.hamzy    1.20 
4862 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultClass,str);
4863                       str=jEnv->GetStringUTFChars(jRole,NULL);
4864 mark.hamzy    1.20 
4865 schuur        1.3     String role(str);
4866 mark.hamzy    1.20 
4867 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4868                       str=jEnv->GetStringUTFChars(jResultRole,NULL);
4869 mark.hamzy    1.20 
4870 schuur        1.3     String resultRole(str);
4871 mark.hamzy    1.20 
4872 schuur        1.3     jEnv->ReleaseStringUTFChars(jResultRole,str);
4873                    
4874                       try {
4875 schuur        1.5        checkNs(cop,jNs);
4876 schuur        1.3        Array<CIMObject> enm=cCc->associators(
4877                             cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
4878 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
4879 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4880                          for (int i=0,m=enm.size(); i<m; i++) {
4881                             enmInst->append(CIMInstance(enm[i]));
4882                          }
4883 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4884 schuur        1.3     }
4885 schuur        1.5     Catch(jEnv);
4886 mark.hamzy    1.20 
4887 schuur        1.3     return 0;
4888                    }
4889                    
4890 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
4891 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4892 mark.hamzy    1.20    jstring jAssocClass, jstring jRole)
4893                    {
4894                       CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4895                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4896                       const char    *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4897                       CIMName        assocClass(str);
4898 schuur        1.3  
4899                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4900                       str=jEnv->GetStringUTFChars(jRole,NULL);
4901 mark.hamzy    1.20 
4902 schuur        1.3     String role(str);
4903 mark.hamzy    1.20 
4904 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4905                    
4906                       try {
4907 schuur        1.5        checkNs(cop,jNs);
4908 schuur        1.3        Array<CIMObjectPath> enm=cCc->referenceNames(
4909                             cop->getNameSpace(),*cop,assocClass,role);
4910 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jint, new Array<CIMObjectPath>(enm));
4911 schuur        1.3     }
4912 schuur        1.5     Catch(jEnv);
4913 mark.hamzy    1.20 
4914 schuur        1.3     return 0;
4915                    }
4916                    
4917 schuur        1.1  JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
4918 schuur        1.5    (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
4919 schuur        1.3     jstring jAssocClass, jstring jRole,
4920 mark.hamzy    1.20    jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl)
4921                    {
4922                       CIMClient       *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4923                       CIMObjectPath   *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4924                       CIMPropertyList  pl  = getList(jEnv,jPl);
4925                       const char      *str = jEnv->GetStringUTFChars(jAssocClass,NULL);
4926                       CIMName          assocClass(str);
4927 schuur        1.3  
4928                       jEnv->ReleaseStringUTFChars(jAssocClass,str);
4929                       str=jEnv->GetStringUTFChars(jRole,NULL);
4930 mark.hamzy    1.20 
4931 schuur        1.3     String role(str);
4932 mark.hamzy    1.20 
4933 schuur        1.3     jEnv->ReleaseStringUTFChars(jRole,str);
4934                    
4935                       try {
4936 schuur        1.5        checkNs(cop,jNs);
4937 schuur        1.3        Array<CIMObject> enm=cCc->references(
4938                             cop->getNameSpace(),*cop,assocClass,role,
4939 mark.hamzy    1.17          (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
4940 schuur        1.3        Array<CIMInstance> *enmInst=new Array<CIMInstance>();
4941                          for (int i=0,m=enm.size(); i<m; i++) {
4942                             enmInst->append(CIMInstance(enm[i]));
4943                          }
4944 mark.hamzy    1.20       return DEBUG_ConvertCToJava (Array<CIMInstance>*, jint, enmInst);
4945 schuur        1.3     }
4946 schuur        1.5     Catch(jEnv);
4947 mark.hamzy    1.20 
4948 schuur        1.5     return 0;
4949                    }
4950                    
4951 schuur        1.6  static int normalizeNs(String &ns, String &nsBase, String &lastNsComp) {
4952                       Uint32 n=ns.size();
4953                       if (ns[n-1]=='/') {
4954                          if (n>=2) ns=ns.subString(0,n-2);
4955                       }
4956                    
4957                       lastNsComp=ns;
4958                       nsBase="root";
4959                    
4960                       n=ns.reverseFind('/');
4961                       if (n!=PEG_NOT_FOUND) {
4962                          lastNsComp=ns.subString(n+1);
4963                          nsBase=ns.subString(0,n);
4964                       }
4965                       return 0;
4966                    }
4967                    
4968 schuur        1.5  JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
4969 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
4970                    {
4971                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4972                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
4973                       String      ns(str);
4974 schuur        1.5  
4975                       jEnv->ReleaseStringUTFChars(jNs,str);
4976 schuur        1.6  
4977                       String lastNsComp;
4978                       String nsBase;
4979                    
4980                       normalizeNs(ns,nsBase,lastNsComp);
4981 schuur        1.5  
4982                       CIMInstance newInstance(CIMName("__Namespace"));
4983 schuur        1.6     newInstance.addProperty(CIMProperty(CIMName ("name"),lastNsComp));
4984 schuur        1.5  
4985                       try {
4986 schuur        1.6        cCc->createInstance(CIMNamespaceName(nsBase),newInstance);
4987 schuur        1.3     }
4988 schuur        1.5     Catch(jEnv);
4989                    }
4990                    
4991                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
4992 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec)
4993                    {
4994 mark.hamzy    1.30    JMPIjvm::cacheIDs(jEnv);
4995                    
4996 mark.hamzy    1.20    CIMClient     *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
4997                       CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop);
4998                       String         ns  = cop->getNameSpace().getString();
4999 schuur        1.6  
5000                       try {
5001                          Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
5002                             cop->getNameSpace(),CIMName("__Namespace"));
5003                          for (int i=0,s=enm.size(); i<s; i++) {
5004                             CIMObjectPath &cop=enm[i];
5005                             const Array<CIMKeyBinding>& kb=cop.getKeyBindings();
5006 mark.hamzy    1.17          const String &n=kb[0].getValue();
5007 mark.hamzy    1.16          if (!deep && n.find('/')!=PEG_NOT_FOUND)
5008                                continue;
5009 mark.hamzy    1.17          String x=ns+"/"+n;
5010                             jstring str=jEnv->NewStringUTF(x.getCString());
5011 mark.hamzy    1.26          jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,str);
5012 schuur        1.6        }
5013                       }
5014                       Catch(jEnv);
5015 mark.hamzy    1.20 
5016 schuur        1.5     return jVec;
5017                    }
5018                    
5019                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
5020 mark.hamzy    1.20   (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs)
5021                    {
5022                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5023                       const char *str = jEnv->GetStringUTFChars(jNs,NULL);
5024                       String      ns(str);
5025 schuur        1.6  
5026                       jEnv->ReleaseStringUTFChars(jNs,str);
5027 mark.hamzy    1.20 
5028 schuur        1.6     String lastNsComp;
5029                       String nsBase;
5030                    
5031                       normalizeNs(ns,nsBase,lastNsComp);
5032                    
5033                       CIMObjectPath cop(String::EMPTY,CIMNamespaceName(nsBase),CIMName("__Namespace"));
5034                       Array<CIMKeyBinding> kb;
5035                       kb.append(CIMKeyBinding(("Name"),CIMValue(lastNsComp)));
5036                       cop.setKeyBindings(kb);
5037                    
5038                       try {
5039                          cCc->deleteInstance(CIMNamespaceName(nsBase),cop);
5040                       }
5041                       Catch(jEnv);
5042 schuur        1.3  }
5043 schuur        1.1  
5044 mark.hamzy    1.24 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1finalize
5045                       (JNIEnv *jEnv, jobject jThs, jint jCc)
5046                    {
5047                       CIMClient  *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc);
5048                    
5049                       delete cCc;
5050                    
5051                       DEBUG_ConvertCleanup (jint, jCc);
5052                    }
5053                    
5054 mark.hamzy    1.38 // -------------------------------------
5055                    // ---
5056                    // -		CIMObject
5057                    // ---
5058                    // -------------------------------------
5059                    
5060 mark.hamzy    1.35 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newClass
5061                      (JNIEnv *jEnv, jobject jThs, jobject jCc)
5062                    {
5063                       CIMClass *cCc = DEBUG_ConvertJavaToC (jint, CIMClass*, jCc);
5064                    
5065                       try {
5066                          CIMObject *cCo = new CIMObject (*cCc);
5067                    
5068                          return DEBUG_ConvertCToJava (CIMObject*, jint, cCo);
5069                       }
5070                       Catch(jEnv);
5071                    
5072                       return 0;
5073                    }
5074                    
5075                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newInstance
5076                      (JNIEnv *jEnv, jobject jThs, jobject jCi)
5077                    {
5078                       CIMInstance *cCi = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi);
5079                    
5080                       try {
5081 mark.hamzy    1.35       CIMObject *cCo = new CIMObject (*cCi);
5082                    
5083                          return DEBUG_ConvertCToJava (CIMObject*, jint, cCo);
5084                       }
5085                       Catch(jEnv);
5086                    
5087                       return 0;
5088                    }
5089                    
5090                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObject__1finalize
5091                      (JNIEnv *jEnv, jobject jThs, jint jInst)
5092                    {
5093                       CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jInst);
5094                    
5095                       delete co;
5096                    
5097                       DEBUG_ConvertCleanup (jint, jInst);
5098                    }
5099                    
5100 mark.hamzy    1.38 // -------------------------------------
5101                    // ---
5102                    // -		OperationContext
5103                    // ---
5104                    // -------------------------------------
5105                    
5106 mark.hamzy    1.36 /*
5107                     * Class:     OperationContext
5108                     * Method:    _get
5109                     * Signature: (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
5110                     */
5111                    JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get
5112                      (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jContainer, jstring jKey)
5113                    {
5114                       OperationContext *poc  = DEBUG_ConvertJavaToC (jint, OperationContext*, jInst);
5115                       jobject           jRet = 0;
5116                    
5117                       if (!poc)
5118                       {
5119                          return jRet;
5120                       }
5121                    
5122                       const char *pszContainer = jEnv->GetStringUTFChars (jContainer, NULL);
5123                       const char *pszKey       = jEnv->GetStringUTFChars (jKey, NULL);
5124                       String      container (pszContainer);
5125                       String      key       (pszKey);
5126                    
5127 mark.hamzy    1.36 ///printf ("container: %s\n", pszContainer);
5128                    ///printf ("key: %s\n", pszKey);
5129                    
5130                       try {
5131                          if (container == "IdentityContainer")
5132                          {
5133                             IdentityContainer ic = poc->get (IdentityContainer::NAME);
5134                    
5135                    /////////printf ("ic\n");
5136                    
5137                             if (key == "userName")
5138                             {
5139                                String userName = ic.getUserName ();
5140                    
5141                    ////////////printf ("userName: %s\n", (const char*)userName.getCString ());
5142                    
5143                                jRet = jEnv->NewStringUTF ((const char*)userName.getCString ());
5144                             }
5145                          }
5146                          else if (container == "SubscriptionInstanceContainer")
5147                          {
5148 mark.hamzy    1.36          SubscriptionInstanceContainer sic = poc->get (SubscriptionInstanceContainer::NAME);
5149                    
5150                             if (key == "subscriptionInstance")
5151                             {
5152                                CIMInstance ci     = sic.getInstance ();
5153                                jint        jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance (ci));
5154                    
5155                                jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef,
5156                                                        JMPIjvm::jv.CIMInstanceNewI,
5157                                                        jciRef);
5158                             }
5159                          }
5160                          else if (container == "SubscriptionInstanceNamesContainer")
5161                          {
5162                             SubscriptionInstanceNamesContainer sinc = poc->get (SubscriptionInstanceNamesContainer::NAME);
5163                    
5164                             if (key == "subscriptionInstanceNames")
5165                             {
5166                                Array<CIMObjectPath> copa        = sinc.getInstanceNames ();
5167                                jobjectArray         jcopa       = 0;
5168                                int                  jcopaLength = copa.size ();
5169 mark.hamzy    1.36 
5170                                jcopa = jEnv->NewObjectArray (jcopaLength,
5171                                                              JMPIjvm::jv.CIMObjectPathClassRef,
5172                                                              0);
5173                    
5174                                for (int i = 0; i < jcopaLength; i++)
5175                                {
5176                                   jEnv->SetObjectArrayElement (jcopa,
5177                                                                i,
5178                                                                jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef,
5179                                                                                 JMPIjvm::jv.CIMObjectPathNewI,
5180                                                                                 new CIMObjectPath (copa[i])));
5181                                }
5182                    
5183                                jRet = (jobject)jcopa;
5184                             }
5185                          }
5186                          else if (container == "SubscriptionFilterConditionContainer")
5187                          {
5188                             SubscriptionFilterConditionContainer sfcc = poc->get (SubscriptionFilterConditionContainer::NAME);
5189                    
5190 mark.hamzy    1.36 /////////printf ("sfcc\n");
5191                    
5192                             if (key == "filterCondition")
5193                             {
5194                                String filterCondition = sfcc.getFilterCondition ();
5195                    
5196                    ////////////printf ("filterCondition: %s\n", (const char*)filterCondition.getCString ());
5197                    
5198                                jRet = jEnv->NewStringUTF ((const char*)filterCondition.getCString ());
5199                             }
5200                             else if (key == "queryLanguage")
5201                             {
5202                                String queryLanguage = sfcc.getQueryLanguage ();
5203                    
5204                                jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ());
5205                             }
5206                          }
5207                          else if (container == "SubscriptionFilterQueryContainer")
5208                          {
5209                             SubscriptionFilterQueryContainer sfqc = poc->get (SubscriptionFilterQueryContainer::NAME);
5210                    
5211 mark.hamzy    1.36          if (key == "filterQuery")
5212                             {
5213                                String filterQuery = sfqc.getFilterQuery ();
5214                    
5215                                jRet = jEnv->NewStringUTF ((const char*)filterQuery.getCString ());
5216                             }
5217                             else if (key == "queryLanguage")
5218                             {
5219                                String queryLanguage = sfqc.getQueryLanguage ();
5220                    
5221                                jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ());
5222                             }
5223                             else if (key == "sourceNameSpace")
5224                             {
5225                                CIMNamespaceName cimNameSpaceName = sfqc.getSourceNameSpace ();
5226                                String           nameSpaceName    = cimNameSpaceName.getString ();
5227                    
5228                                jRet = jEnv->NewStringUTF ((const char*)nameSpaceName.getCString ());
5229                             }
5230                          }
5231                          else if (container == "SnmpTrapOidContainer")
5232 mark.hamzy    1.36       {
5233                             SnmpTrapOidContainer stoc = poc->get (SnmpTrapOidContainer::NAME);
5234                    
5235                             if (key == "snmpTrapOid")
5236                             {
5237                                String snmpTrapOid = stoc.getSnmpTrapOid ();
5238                    
5239                                jRet = jEnv->NewStringUTF ((const char*)snmpTrapOid.getCString ());
5240                             }
5241                          }
5242                       }
5243                       Catch(jEnv);
5244                    
5245                    ///printf ("jRet: %08X\n", (int)jRet);
5246                    
5247                       jEnv->ReleaseStringUTFChars (jContainer, pszContainer);
5248                       jEnv->ReleaseStringUTFChars (jKey, pszKey);
5249                    
5250                       return jRet;
5251                    }
5252                    
5253 mark.hamzy    1.38 // -------------------------------------
5254                    // ---
5255                    // -		SelectExp
5256                    // ---
5257                    // -------------------------------------
5258                    
5259                    /*
5260                     * Class:     org_pegasus_jmpi_SelectExp
5261                     * Method:    _finalize
5262                     * Signature: (I)V
5263                     */
5264                    JNIEXPORT void JNICALL Java_org_pegasus_jmpi_SelectExp__1finalize
5265                      (JNIEnv *jEnv, jobject jThs, jint jEselx)
5266                    {
5267                       CMPI_SelectExp *eSelx = DEBUG_ConvertJavaToC (jint, CMPI_SelectExp*, jEselx);
5268                    
5269                       delete eSelx;
5270                    
5271                       DEBUG_ConvertCleanup (jint, eSelx);
5272                    }
5273                    
5274 mark.hamzy    1.38 /*
5275                     * Class:     org_pegasus_jmpi_SelectExp
5276                     * Method:    _newSelectExp
5277                     * Signature: (Ljava/lang/String;)I
5278                     */
5279                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_SelectExp__1newSelectExp
5280                      (JNIEnv *jEnv, jobject jThs, jstring jQuery)
5281                    {
5282                       const char         *pszQuery = jEnv->GetStringUTFChars (jQuery, NULL);
5283                       CMPI_SelectExp     *eSelx    = NULL;
5284                       WQLSelectStatement *stmt     = NULL;
5285                       String              queryLanguage (CALL_SIGN_WQL);
5286                       String              query (pszQuery);
5287                    
5288                       stmt  = new WQLSelectStatement (queryLanguage, query);
5289                       eSelx = new CMPI_SelectExp (stmt);
5290                    
5291                       jEnv->ReleaseStringUTFChars (jQuery, pszQuery);
5292                    
5293                       return DEBUG_ConvertCToJava (CMPI_SelectExp *, jint, eSelx);
5294                    }
5295 mark.hamzy    1.38 
5296                    /*
5297                     * Class:     org_pegasus_jmpi_SelectExp
5298                     * Method:    _getSelectString
5299                     * Signature: (I)Ljava/lang/String;
5300                     */
5301                    JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_SelectExp__1getSelectString
5302                      (JNIEnv *jEnv, jobject jThs, jint jEselx)
5303                    {
5304                       CMPI_SelectExp *eSelx = DEBUG_ConvertJavaToC (jint, CMPI_SelectExp*, jEselx);
5305                    
5306                       return (jstring)jEnv->NewStringUTF (eSelx->cond.getCString ());
5307                    }
5308                    
5309                    // -------------------------------------
5310                    // ---
5311                    // -		JMPISelectList
5312                    // ---
5313                    // -------------------------------------
5314                    
5315                    /*
5316 mark.hamzy    1.38  * Class:     org_pegasus_jmpi_JMPISelectList
5317                     * Method:    _applyInstance
5318                     * Signature: (II)I
5319                     */
5320                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyInstance
5321                      (JNIEnv *jEnv, jobject jThs, jint jEselx, jint jciInstance)
5322                    {
5323                       CMPI_SelectExp *eSelx = DEBUG_ConvertJavaToC (jint, CMPI_SelectExp*, jEselx);
5324                       CIMInstance    *ci    = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciInstance);
5325                       CIMInstance    *ciRet = 0;
5326                    
5327                       if (  !eSelx
5328                          || !eSelx->wql_stmt
5329                          )
5330                       {
5331                          return 0;
5332                       }
5333                    
5334                       ciRet = new CIMInstance (ci->clone ());
5335                    
5336                       if (ciRet)
5337 mark.hamzy    1.38    {
5338                          eSelx->wql_stmt->applyProjection (*ciRet, false);
5339                       }
5340                    
5341                       return DEBUG_ConvertCToJava (CIMInstance *, jint, ciRet);
5342                    }
5343                    
5344                    /*
5345                     * Class:     org_pegasus_jmpi_JMPISelectList
5346                     * Method:    _applyClass
5347                     * Signature: (II)I
5348                     */
5349                    JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_JMPISelectList__1applyClass
5350                      (JNIEnv *jEnv, jobject jThs, jint jEselx, jint jciClass)
5351                    {
5352                       CMPI_SelectExp *eSelx = DEBUG_ConvertJavaToC (jint, CMPI_SelectExp*, jEselx);
5353                       CIMClass       *cc    = DEBUG_ConvertJavaToC (jint, CIMClass*, jciClass);
5354                       CIMClass       *ccRet = NULL;
5355                    
5356                       if (  !eSelx
5357                          || !eSelx->wql_stmt
5358 mark.hamzy    1.38       )
5359                       {
5360                          return 0;
5361                       }
5362                    
5363                       if (cc)
5364                       {
5365                          CIMObject co (cc->clone ());
5366                    
5367                          eSelx->wql_stmt->applyProjection (co, false);
5368                    
5369                          ccRet = new CIMClass (co);
5370                    
5371                          return DEBUG_ConvertCToJava (CIMClass *, jint, ccRet);
5372                       }
5373                    
5374                       return 0;
5375                    }
5376                    
5377                    // -------------------------------------
5378                    // ---
5379 mark.hamzy    1.38 // -		JMPIQueryExp
5380                    // ---
5381                    // -------------------------------------
5382                    
5383                    /*
5384                     * Class:     org_pegasus_jmpi_JMPIQueryExp
5385                     * Method:    _applyInstance
5386                     * Signature: (II)Z
5387                     */
5388                    JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_JMPIQueryExp__1applyInstance
5389                      (JNIEnv *jEnv, jobject jThs, jint jEselx, jint jciInstance)
5390                    {
5391                       CMPI_SelectExp *eSelx = DEBUG_ConvertJavaToC (jint, CMPI_SelectExp*, jEselx);
5392                       CIMInstance    *ci    = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciInstance);
5393                    
5394                       if (  !eSelx
5395                          || !eSelx->wql_stmt
5396                          )
5397                       {
5398                          return 0;
5399                       }
5400 mark.hamzy    1.38 
5401                       if (eSelx->wql_stmt)
5402                       {
5403                          return eSelx->wql_stmt->evaluate (*ci);
5404                       }
5405                    
5406                       return false;
5407                    }
5408                    
5409 schuur        1.5  } // extern "C"
5410 schuur        1.1  
5411                    PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2