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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2