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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2