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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2