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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2