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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2