//%2006//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation, The Open Group. // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; Symantec Corporation; The Open Group. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //============================================================================== // // Author: Adrian Schuur, schuur@de.ibm.com // // Modified By: Adrian Dutta // Andy Viciu // Magda Vacarelu // David Dillard, VERITAS Software Corp. // (david.dillard@veritas.com) // Mark Hamzy, hamzy@us.ibm.com // //%///////////////////////////////////////////////////////////////////////////// #include "JMPIImpl.h" #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC) #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include PEGASUS_USING_STD; PEGASUS_NAMESPACE_BEGIN JavaVM *JMPIjvm::jvm=NULL; JvmVector JMPIjvm::jv; int JMPIjvm::trace=0; #ifdef PEGASUS_DEBUG #define DDD(x) if (JMPIjvm::trace) x; #else #define DDD(x) #endif #include "Convert.h" JMPIjvm::ClassTable JMPIjvm::_classTable; JMPIjvm::ObjectTable JMPIjvm::_objectTable; const char* classNames[]={ /*00*/ "java/util/Vector" , /*01*/ "java/lang/Boolean", /*02*/ "java/lang/Byte", /*03*/ "java/lang/Short", /*04*/ "java/lang/Integer", /*05*/ "java/lang/Long", /*06*/ "java/lang/Float", /*07*/ "java/lang/Double", /*08*/ "org/pegasus/jmpi/UnsignedInt8", /*09*/ "org/pegasus/jmpi/UnsignedInt16", /*10*/ "org/pegasus/jmpi/UnsignedInt32", /*11*/ "org/pegasus/jmpi/UnsignedInt64", /*12*/ "org/pegasus/jmpi/CIMObjectPath", /*13*/ "org/pegasus/jmpi/CIMException", /*14*/ "java/math/BigInteger", /*15*/ "org/pegasus/jmpi/CIMProperty", /*16*/ "org/pegasus/jmpi/CIMOMHandle", /*17*/ "org/pegasus/jmpi/CIMClass", /*18*/ "org/pegasus/jmpi/CIMInstance", /*19*/ "org/pegasus/jmpi/CIMValue", /*20*/ "java/lang/Object", /*21*/ "java/lang/Throwable", /*22*/ "java/lang/String", /*23*/ "org/pegasus/jmpi/JarClassLoader", /*24*/ "org/pegasus/jmpi/CIMDateTime", /*25*/ "org/pegasus/jmpi/SelectExp", /*26*/ "org/pegasus/jmpi/CIMQualifier", /*27*/ "org/pegasus/jmpi/CIMQualifierType", /*28*/ "org/pegasus/jmpi/CIMFlavor", /*29*/ "org/pegasus/jmpi/CIMArgument", /*30*/ "org/pegasus/jmpi/CIMInstanceException", /*31*/ "org/pegasus/jmpi/CIMObject", /*32*/ "java/lang/Character", /*33*/ "org/pegasus/jmpi/OperationContext", /*34*/ "java/lang/Class", }; const METHOD_STRUCT instanceMethodNames[]={ /*00 VectorNew */ { /*Vector */ 0, "", "()V" }, /*01 BooleanNewZ */ { /*Boolean */ 1, "", "(Z)V" }, /*02 ByteNewB */ { /*Byte */ 2, "", "(B)V" }, /*03 ShortNewS */ { /*Short */ 3, "", "(S)V" }, /*04 IntegerNewI */ { /*Integer */ 4, "", "(I)V" }, /*05 LongNewJ */ { /*Long */ 5, "", "(J)V" }, /*06 FloatNewF */ { /*Float */ 6, "", "(F)V" }, /*07 DoubleNewD */ { /*Double */ 7, "", "(D)V" }, /*08 UnsignedInt8NewS */ { /*UnsignedInt8 */ 8, "", "(S)V" }, /*09 UnsignedInt16NewI */ { /*UnsignedInt16 */ 9, "", "(I)V" }, /*10 UnsignedInt32NewJ */ { /*UnsignedInt32 */10, "", "(J)V" }, /*11 UnsignedInt64NewBi */ { /*UnsignedInt64 */11, "", "(Ljava/math/BigInteger;)V" }, /*12 CIMObjectPathNewI */ { /*CIMObjectPath */12, "", "(I)V" }, /*13 CIMExceptionNewSt */ { /*CIMException */13, "", "(Ljava/lang/String;)V" }, /*14 CIMPropertyNewI */ { /*CIMProperty */15, "", "(I)V" }, /*15 VectorAddElement */ { /*Vector */ 0, "addElement", "(Ljava/lang/Object;)V" }, /*16 VectorElementAt */ { /*Vector */ 0, "elementAt", "(I)Ljava/lang/Object;" }, /*17 CIMOMHandleNewISt */ { /*CIMOMHandle */16, "", "(ILjava/lang/String;)V" }, /*18 CIMExceptionNewI */ { /*CIMException */13, "", "(I)V" }, /*19 CIMClassNewI */ { /*CIMClass */17, "", "(I)V" }, /*20 CIMInstanceNewI */ { /*CIMInstance */18, "", "(I)V" }, /*21 CIMObjectPathCInst */ { /*CIMObjectPath */12, "cInst", "()I" }, /*22 CIMInstanceCInst */ { /*CIMInstance */18, "cInst", "()I" }, /*23 CIMClassCInst */ { /*CIMClass */17, "cInst", "()I" }, /*24 ObjectToString */ { /*Object */20, "toString", "()Ljava/lang/String;" }, /*25 ThrowableGetMessage */ { /*Throwable */21, "getMessage", "()Ljava/lang/String;" }, /*26 CIMExceptionGetID */ { /*CIMException */13, "getID", "()Ljava/lang/String;" }, /*27 VectorSize */ { /*Vector */ 0, "size", "()I" }, /*28 CIMPropertyCInst */ { /*CIMProperty */15, "cInst", "()I" }, /*29 CIMOMHandleGetClass */ { /*CIMOMHandle */16, "getClass", "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" }, /*30 VectorRemoveElementAt */ { /*Vector */ 0, "removeElementAt", "(I)V" }, /*31 CIMValueCInst */ { /*CIMValue */19, "cInst", "()I" }, /*32 CIMExceptionNewISt */ { /*CIMException */13, "", "(ILjava/lang/String;)V" }, /*33 CIMExceptionGetCode */ { /*CIMException */13, "getCode", "()I" }, /*34 CIMDateTimeNewI */ { /*CIMDateTime */24, "", "(I)V" }, /*35 SelectExpNewI */ { /*SelectExp */25, "", "(I)V" }, /*36 CIMQualifierNewI */ { /*CIMQualifier */26, "", "(I)V" }, /*37 CIMFlavorNewI */ { /*CIMFlavor */28, "", "(I)V" }, /*38 CIMFlavorGetFlavor */ { /*CIMFlavor */28, "getFlavor", "()I" }, /*39 CIMArgumentCInst */ { /*CIMArgument */29, "cInst", "()I" }, /*40 CIMArgumentNewI */ { /*CIMArgument */29, "", "(I)V" }, /*41 CIMExceptionNew */ { /*CIMException */13, "", "()V" }, /*42 CIMExceptionNewStOb */ { /*CIMException */13, "", "(Ljava/lang/String;Ljava/lang/Object;)V" }, /*43 CIMExceptionNewStObOb */ { /*CIMException */13, "", "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" }, /*44 CIMExceptionNewStObObOb */ { /*CIMException */13, "", "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" }, /*45 CIMValueNewI */ { /*CIMValue */19, "", "(I)V" }, /*46 CIMObjectNewIZ */ { /*CIMObject */31, "", "(IZ)V" }, /*47 CharacterNewC */ { /*Character */32, "", "(C)V" }, /*48 OperationContextNewI */ { /*OperationContext */33, "", "(I)V" }, /*49 OperationContextUnassociate */ { /*OperationContext */33, "unassociate", "()V" }, /*50 ClassGetInterfaces */ { /*Class */34, "getInterfaces", "()[Ljava/lang/Class;" }, /*51 ClassGetName */ { /*Class */34, "getName", "()Ljava/lang/String;" }, }; const METHOD_STRUCT staticMethodNames[]={ /*00*/ { 14, "valueOf", "(J)Ljava/math/BigInteger;" }, /*01*/ { 23, "load", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" }, }; static int methodInitDone=0; jclass classRefs[sizeof(classNames)/sizeof(classNames[0])]; jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(instanceMethodNames[0])]; jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(staticMethodNames[0])]; jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) { jclass localRefCls=env->FindClass(name); if (localRefCls==NULL) return JNI_FALSE; jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls); #if 0 jmethodID jmidToString = env->GetMethodID(globalRefCls, "toString", "()Ljava/lang/String;"); jstring jstringResult = (jstring)env->CallObjectMethod(globalRefCls, jmidToString); const char *pszResult = env->GetStringUTFChars(jstringResult, 0); DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getGlobalClassRef: globalRefCls = "<GetMethodID(classRefs[instanceMethodNames[j].clsIndex], instanceMethodNames[j].methodName, instanceMethodNames[j].signature))==NULL) { DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex], staticMethodNames[k].methodName, staticMethodNames[k].signature))==NULL) { DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<ThrowNew(JMPIjvm::jv.CIMExceptionClassRef,e); } int JMPIjvm::destroyJVM() { DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<DestroyJavaVM(); jvm = NULL; return 0; } #endif return -1; } Mutex JMPIjvm::_initMutex; int JMPIjvm::initJVM () { AutoMutex lock (_initMutex); if (jvm != NULL) { return 0; } JavaVMInitArgs vm_args; jint res; char *envstring; JNIEnv *env; JavaVMOption *poptions = 0; int maxoption = 0; typedef struct _JVMOptions { const char *pszEnvName; const char *pszPrefix; bool fSplit; } JVMOPTIONS; Array JNIoptions; static JVMOPTIONS aEnvOptions[] = { { "CLASSPATH", "-Djava.class.path=", false }, { "PEGASUS_JMPI_MAX_HEAP", "-Xmx" , false }, { "PEGASUS_JMPI_INITIAL_HEAP", "-Xms" , false }, { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss" , false }, { "PEGASUS_JMPI_VERBOSE", "-verbose:" , true } }; std::ostringstream oss; #ifdef PEGASUS_DEBUG if (getenv("PEGASUS_JMPI_TRACE")) JMPIjvm::trace=1; else JMPIjvm::trace=0; #else JMPIjvm::trace=0; #endif DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl)); jv.initRc=0; envstring=getenv("CLASSPATH"); if (envstring==NULL) { jv.initRc=1; DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl)); return -1; } ///JNIoptions.append ("-Djava.compiler=NONE"); ///maxoption++; for (Uint32 i = 0; i < (int)(sizeof (aEnvOptions)/sizeof (aEnvOptions[0])); i++) { JVMOPTIONS *pEnvOption = &aEnvOptions[i]; envstring = getenv (pEnvOption->pszEnvName); if (envstring) { if (pEnvOption->fSplit) { bool fCommaFound = true; string stringValues = envstring; string::size_type posStart = 0; string::size_type posEnd = stringValues.length () - 1; while (fCommaFound) { string stringValue; string::size_type posComma = stringValues.find (',', posStart); if (posComma != string::npos) { fCommaFound = true; stringValue = stringValues.substr (posStart, posComma); posStart = posComma + 1; } else { fCommaFound = false; stringValue = stringValues.substr (posStart, posEnd - posStart + 1); } DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): fCommaFound = " << fCommaFound << ", posStart = " << posStart << ", posComma = " << posComma << ", posEnd = " << posEnd << "" << PEGASUS_STD(endl)); maxoption++; oss.str (""); oss << pEnvOption->pszPrefix << stringValue; JNIoptions.append (oss.str ()); DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found! Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl)); } } else { maxoption++; oss.str (""); oss << pEnvOption->pszPrefix << envstring; JNIoptions.append (oss.str ()); DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << pEnvOption->pszEnvName << " found! Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl)); } } } poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption)); if (!poptions) { jv.initRc=1; DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl)); return -1; } for (Uint32 i=0; i < JNIoptions.size(); i++) { poptions[i].optionString = (char *)JNIoptions[i].c_str (); DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl)); } vm_args.version=JNI_VERSION_1_2; vm_args.options=poptions; vm_args.nOptions=maxoption; vm_args.ignoreUnrecognized=JNI_TRUE; res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args); if (poptions) { free (poptions); } if (res!=0) { jv.initRc=1; DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<ExceptionOccurred()) { jv.initRc=1; env->ExceptionDescribe(); #ifdef JAVA_DESTROY_VM_WORKS JvmVector *jv = NULL; attachThread (&jv); jvm->DestroyJavaVM (); jvm = NULL; #endif return -1; } jv.initRc=1; jv.jvm=jvm; return res; } JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) { JNIEnv* env = NULL; if (jvm == NULL) { initJVM (); if (jvm == NULL) return NULL; } jvm->AttachCurrentThread ((void**)&env,NULL); *jvp=&jv; return env; } void JMPIjvm::detachThread() { jvm->DetachCurrentThread(); } jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln, const char *cn, jclass *cls) { jobject gProv=NULL; jclass scls=NULL; DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: jar = "<NewStringUTF((const char*)jar.getCString()); jstring jcln=env->NewStringUTF((const char*)cln.getCString()); jclass jcls=(jclass)env->CallStaticObjectMethod(JMPIjvm::jv.JarClassLoaderRef,jv.JarClassLoaderLoad, jjar,jcln); if (env->ExceptionCheck()) { env->ExceptionDescribe(); PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<ExceptionCheck()) { DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::getProvider: Provider "<ExceptionDescribe()); return NULL; } *cls=scls; if (scls) { DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<GetMethodID(*cls,"","()V"); jobject lProv=env->NewObject(*cls,id); gProv=(jobject)env->NewGlobalRef(lProv); if (env->ExceptionCheck()) { DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<ExceptionDescribe()); return NULL; } *cls=scls; if (scls) { DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::getProvider: scls = "<GetMethodID(*cls,"","()V"); jobject lProv=env->NewObject(*cls,id); gProv=(jobject)env->NewGlobalRef(lProv); if (env->ExceptionCheck()) { DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<ExceptionDescribe(); exit(13); } } } /************************************************************************** * name - NewPlatformString * description - Returns a new Java string object for the specified * platform string. * parameters - env * s Platform encoded string * returns - Java string object pointer or null (0) **************************************************************************/ jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s) { size_t len = strlen(s); jclass cls; jmethodID mid; jbyteArray ary; NULL_CHECK0(cls = (*env).FindClass("java/lang/String")); NULL_CHECK0(mid = (*env).GetMethodID(cls, "", "([B)V")); ary = (*env).NewByteArray((jsize)len); if (ary != 0) { jstring str = 0; (*env).SetByteArrayRegion(ary, 0, (jsize)len, (jbyte *)s); if (!(*env).ExceptionOccurred()) { str = (jstring)(*env).NewObject(cls, mid, ary); } (*env).DeleteLocalRef(ary); return str; } return 0; } /************************************************************************** * name - NewPlatformStringArray * description - Returns a new array of Java string objects for the specified * array of platform strings. * parameters - env * strv Platform encoded string array * strc Number of strings in strv * returns - Java string array object pointer **************************************************************************/ jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc) { jarray cls; jarray ary; int i; NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String")); NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0)); for (i = 0; i < strc; i++) { jstring str = NewPlatformString(env, *strv++); NULL_CHECK0(str); (*env).SetObjectArrayElement((jobjectArray)ary, i, str); (*env).DeleteLocalRef(str); } return (jobjectArray)ary; } CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) { CIMPropertyList pl; if (l) { Array n; for (jsize i=0,s=jEnv->GetArrayLength(l); iGetObjectArrayElement(l,i); const char *pn = jEnv->GetStringUTFChars(jObj,NULL); n.append(pn); jEnv->ReleaseStringUTFChars(jObj,pn); } pl.set(n); } return pl; } extern "C" { void throwCimException(JNIEnv *jEnv, CIMException & e) { JMPIjvm::cacheIDs(jEnv); jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,(jint)e.getCode()); jEnv->Throw((jthrowable)ev); } void throwFailedException(JNIEnv *jEnv) { JMPIjvm::cacheIDs(jEnv); jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,1); jEnv->Throw((jthrowable)ev); } void throwNotSupportedException(JNIEnv *jEnv) { JMPIjvm::cacheIDs(jEnv); jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewI,7); jEnv->Throw((jthrowable)ev); } // ------------------------------------- // --- // - CIMException // --- // ------------------------------------- JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new (JNIEnv *jEnv, jobject jThs) { JMPIjvm::cacheIDs(jEnv); jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNew); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS (JNIEnv *jEnv, jobject jThs, jstring jM) { JMPIjvm::cacheIDs(jEnv); jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewSt,jM); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) { JMPIjvm::cacheIDs(jEnv); jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStOb,jM,jO1); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) { JMPIjvm::cacheIDs(jEnv); jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObOb,jM,jO1,jO2); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) { JMPIjvm::cacheIDs(jEnv); jEnv->CallNonvirtualVoidMethod(jThs,JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewStObObOb,jM,jO1,jO2,jO3); } // ------------------------------------- // --- // - CIMOMHandle // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl; OperationContext ctx; if (jPl) pl=getList(jEnv,jPl); else pl=CIMPropertyList(); try { CIMClass cls=ch->getClass(ctx,cop->getNameSpace(), cop->getClassName(), (Boolean)lo, (Boolean)iq, (Boolean)ic, pl); return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls)); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMClass *cl = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl); OperationContext ctx; try { ch->createClass(ctx,cop->getNameSpace(),*cl); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMClass *cl = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl); OperationContext ctx; try { ch->modifyClass(ctx,cop->getNameSpace(),*cl); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; try { ch->deleteClass(ctx,cop->getNameSpace(),cop->getClassName()); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMNamespaceName ns = cop->getNameSpace(); OperationContext ctx; try { Array enm = ch->enumerateClassNames(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)deep); Array *enmop = new Array(); for (int i=0,m=enm.size(); iappend(CIMObjectPath(String::EMPTY,ns,enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmop); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; try { Array en=ch->enumerateClasses(ctx, cop->getNameSpace(), cop->getClassName(), (Boolean)deep, (Boolean)lo, (Boolean)iq, (Boolean)ic); return DEBUG_ConvertCToJava (Array*, jint, new Array(en)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; CIMPropertyList pl; if (jPl) pl=getList(jEnv,jPl); else pl=CIMPropertyList(); try { CIMInstance *inst=new CIMInstance(ch->getInstance(ctx, cop->getNameSpace(), *cop, (Boolean)lo, (Boolean)iq, (Boolean)ic, pl)); return DEBUG_ConvertCToJava (CIMInstance*, jint, inst); } Catch(jEnv); return -1; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; try { ch->deleteInstance(ctx,cop->getNameSpace(),*cop); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); OperationContext ctx; try { ci->setPath(*cop); CIMObjectPath obj=ch->createInstance(ctx,cop->getNameSpace(),*ci); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj)); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi, jboolean iq, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); CIMPropertyList pl = getList(jEnv,jPl); OperationContext ctx; try { ci->setPath(*cop); ch->modifyInstance(ctx,cop->getNameSpace(),*ci,(Boolean)iq,pl); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; try { Array enm=ch->enumerateInstanceNames(ctx, cop->getNameSpace(), cop->getClassName()); //,(Boolean)deep); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl; OperationContext ctx; if (jPl) pl=getList(jEnv,jPl); else pl=CIMPropertyList(); try { Array en=ch->enumerateInstances(ctx, cop->getNameSpace(), cop->getClassName(), (Boolean)deep, (Boolean)lo, (Boolean)iq, (Boolean)ic, pl); return DEBUG_ConvertCToJava (Array*, jint, new Array(en)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jQuery, jstring jQl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jQuery,NULL); String query(str); jEnv->ReleaseStringUTFChars(jQuery,str); str=jEnv->GetStringUTFChars(jQl,NULL); String ql(str); jEnv->ReleaseStringUTFChars(jQl,str); try { Array enm=ch->execQuery(ctx,cop->getNameSpace(),ql,query); Array *enmInst=new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMName prop(str); jEnv->ReleaseStringUTFChars(jN,str); try { CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop)); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } Catch(jEnv); return -1; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jPn, jint jV) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; CIMValue *val = (CIMValue*)jCop; const char *str = jEnv->GetStringUTFChars(jPn,NULL); CIMName pName(str); jEnv->ReleaseStringUTFChars(jPn,str); try { ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut) { JMPIjvm::cacheIDs(jEnv); CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jMn,NULL); CIMName method(str); jEnv->ReleaseStringUTFChars(jMn,str); Array in; Array out; for (int i = 0, m = jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); i < m; i++) { JMPIjvm::checkException(jEnv); jobject jProp = jEnv->CallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i); JMPIjvm::checkException(jEnv); jint jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp); JMPIjvm::checkException(jEnv); in.append(CIMParamValue(p->getName().getString(),p->getValue())); } try { CIMValue *val = new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out)); for (int i=0,m=out.size(); iNewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp); jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop); } return DEBUG_ConvertCToJava (CIMValue*, jint, val); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobjectArray jIn, jobjectArray jOut) { JMPIjvm::cacheIDs(jEnv); CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jMn,NULL); CIMName method(str); jEnv->ReleaseStringUTFChars(jMn,str); Array in; Array out; for (int i=0,m=jEnv->GetArrayLength(jIn); iGetObjectArrayElement(jIn,i); JMPIjvm::checkException(jEnv); jint jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst); CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp); JMPIjvm::checkException(jEnv); in.append(*p); } try { CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out)); for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); iSetObjectArrayElement(jOut,i, jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm)); } return DEBUG_ConvertCToJava (CIMValue*, jint, val); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jResultClass,NULL); CIMName resultClass(str); jEnv->ReleaseStringUTFChars(jResultClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); str=jEnv->GetStringUTFChars(jResultRole,NULL); String resultRole(str); jEnv->ReleaseStringUTFChars(jResultRole,str); try { Array enm=ch->associatorNames(ctx, cop->getNameSpace(), *cop, assocClass, resultClass, role, resultRole); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associators (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole, jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; CIMPropertyList pl = getList(jEnv,jPl); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jResultClass,NULL); CIMName resultClass(str); jEnv->ReleaseStringUTFChars(jResultClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); str=jEnv->GetStringUTFChars(jResultRole,NULL); String resultRole(str); jEnv->ReleaseStringUTFChars(jResultRole,str); try { Array enm = ch->associators(ctx, cop->getNameSpace(), *cop, assocClass, resultClass, role, resultRole, (Boolean)includeQualifiers, (Boolean)includeClassOrigin, pl); Array *enmInst = new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jAssocClass, jstring jRole) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); try { Array enm = ch->referenceNames(ctx, cop->getNameSpace(), *cop, assocClass, role); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jAssocClass, jstring jRole, jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); OperationContext ctx; CIMPropertyList pl = getList(jEnv,jPl); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); try { Array enm = ch->references(ctx, cop->getNameSpace(), *cop, assocClass, role, (Boolean)includeQualifiers, (Boolean)includeClassOrigin, pl); Array *enmInst = new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd) { CIMOMHandle *ch = DEBUG_ConvertJavaToC (jint, CIMOMHandle*, jCh); CIMInstance *ind = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInd); const char *str = jEnv->GetStringUTFChars (jName, NULL); String name (str); jEnv->ReleaseStringUTFChars (jName, str); str = jEnv->GetStringUTFChars (jNs, NULL); String ns (str); jEnv->ReleaseStringUTFChars (jNs, str); CIMObjectPath ref (ind->getPath ()); ref.setNameSpace (ns); DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() ref = "<getClassName()); for (int i=0,m=cls->getQualifierCount(); iaddQualifier(cls->getQualifier(i).clone()); } catch (Exception e) {} } for (int i=0,m=cls->getPropertyCount(); igetProperty(i); ci->addProperty(cp.clone()); for (int j=0, s=cp.getQualifierCount(); jgetProperty(i).addQualifier(cp.getQualifier(j)); } catch (Exception e) {} } } return DEBUG_ConvertCToJava (CIMInstance*, jint, ci); } Catch(jEnv); return 0; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName (JNIEnv *jEnv, jobject jThs, jint jCls) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); try { const String &cn=cls->getClassName().getString(); jstring str=jEnv->NewStringUTF(cn.getCString()); return str; } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint rv = -1; Uint32 pos = cls->findQualifier(String(str)); if (pos!=PEG_NOT_FOUND) rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(cls->getQualifier(pos))); jEnv->ReleaseStringUTFChars(jN,str); return rv; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint rv = -1; Uint32 pos = cls->findProperty(CIMName(str)); if (pos!=PEG_NOT_FOUND) rv = DEBUG_ConvertCToJava (CIMProperty*, jint, new CIMProperty(cls->getProperty(pos))); jEnv->ReleaseStringUTFChars(jN,str); return rv; } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); const char *str = jEnv->GetStringUTFChars(jQ,NULL); Uint32 pos = cls->findQualifier(String(str)); jEnv->ReleaseStringUTFChars(jQ,str); return (jboolean)(pos!=PEG_NOT_FOUND); } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); for (int i=0,s=cls->getPropertyCount(); igetProperty(i)); jint jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop); } return jVec; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); cls->addProperty(*p); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); for (int i=cls->getPropertyCount()-1; i>=0; i--) { cls->removeProperty(i); } for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i)); jint jp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp); JMPIjvm::checkException(jEnv); cls->addProperty(*cp); } } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); for (int i=0,s=cls->getQualifierCount(); igetQualifier(i)); jint jCq = DEBUG_ConvertCToJava (CIMQualifier*, jint, cq); jobject qual = jEnv->NewObject(JMPIjvm::jv.CIMQualifierClassRef,JMPIjvm::jv.CIMQualifierNewI,jCq); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,qual); } return jVec; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new (JNIEnv *jEnv, jobject jThs, jstring jN) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMClass *cls = new CIMClass(CIMName(str), CIMName()); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMClass*, jint, cls); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass (JNIEnv *jEnv, jobject jThs, jint jCls) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); const String &cn = cls->getSuperClassName().getString(); jstring str=jEnv->NewStringUTF(cn.getCString()); return str; } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); if (cls->hasKeys()) { Array keyNames; cls->getKeyNames(keyNames); for(int i=0, s=keyNames.size();ifindProperty(keyNames[i]); if (pos!=PEG_NOT_FOUND){ CIMProperty *cp = new CIMProperty(cls->getProperty(pos)); jint jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop); } } } return jVec; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint rv = -1; Uint32 pos = cls->findMethod(String(str)); if (pos!=PEG_NOT_FOUND) { rv = DEBUG_ConvertCToJava (CIMMethod*, jint, new CIMMethod(cls->getMethod(pos))); } jEnv->ReleaseStringUTFChars(jN,str); return rv; } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); CIMClass *clsToBeCompared = DEBUG_ConvertJavaToC (jint, CIMClass*, jClsToBeCompared); return cls->identical(*clsToBeCompared); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize (JNIEnv *jEnv, jobject jThs, jint jCls) { CIMClass *cls = DEBUG_ConvertJavaToC (jint, CIMClass*, jCls); delete cls; DEBUG_ConvertCleanup (jint, jCls); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo) { CIMClass *cc = DEBUG_ConvertJavaToC (jint, CIMClass*, jInst); CIMClass *cf = 0; CIMName clsn = cc->getClassName(); if (lo) { cf = new CIMClass(cc->clone()); CIMName clsn=cc->getClassName(); for (int i=cf->getPropertyCount()-1; i>=0; i--) if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i); return DEBUG_ConvertCToJava (CIMClass*, jint, cf); } else if (jPl) { CIMPropertyList pl = getList(jEnv,jPl); Array n = pl.getPropertyNameArray(); cf = new CIMClass(clsn, cc->getSuperClassName()); for (int i = 0,s = n.size(); i < s; i++) { Uint32 pos=cc->findProperty(n[i]); if (pos!=PEG_NOT_FOUND) { if (iq) { CIMProperty cp = cc->getProperty(pos).clone(); if (!ic) cp.setClassOrigin(CIMName()); cf->addProperty(cp); } else { CIMProperty cp = cc->getProperty(pos); CIMName co; if (ic) co = cp.getClassOrigin(); CIMProperty np(cp.getName(), cp.getValue(), cp.getArraySize(), cp.getReferenceClassName(), co, cp.getPropagated()); cf->addProperty(np); } } } if (iq) for (Uint32 i = 0, s = cc->getQualifierCount(); i < s; i++) cf->addQualifier(cc->getQualifier(i)); } else if (iq) { cf = new CIMClass(cc->clone()); if (ic) return DEBUG_ConvertCToJava (CIMClass*, jint, cf); for (int i = cf->getPropertyCount()-1; i >= 0; i--) { CIMProperty cp=cf->getProperty(i); cp.setClassOrigin(CIMName()); cf->removeProperty(i); cf->addProperty(cp); } } else { cf = new CIMClass(clsn, cc->getSuperClassName()); for (int i = cc->getPropertyCount()-1; i >= 0; i--) { CIMProperty cp = cc->getProperty(i); CIMName co; if (ic) co = cp.getClassOrigin(); CIMProperty np(cp.getName(), cp.getValue(), cp.getArraySize(), cp.getReferenceClassName(), co, cp.getPropagated()); cf->addProperty(np); } } return DEBUG_ConvertCToJava (CIMClass*, jint, cf); } // ------------------------------------- // --- // - CIMInstance // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new (JNIEnv *jEnv, jobject jThs) { return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance()); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn (JNIEnv *jEnv, jobject jThs, jstring jN) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMInstance *ci = new CIMInstance(CIMName(str)); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMInstance*, jint, ci); } //Added by Andy Viciu JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); const char *str = jEnv->GetStringUTFChars(jN,NULL); jEnv->ReleaseStringUTFChars(jN,str); /* NOT SUPPORTED AND NOT NEEDED*/ } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); const char *str = jEnv->GetStringUTFChars(jN,NULL); Uint32 pos = ci->findProperty(CIMName(str)); try { if (pos!=PEG_NOT_FOUND) { CIMProperty cp=ci->getProperty(pos); if (cp.getType()==cv->getType()) { cp.setValue(*cv); } else { DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<getClassName().getString()<<", property name: "< "<getType()<removeProperty(pos); ci->addProperty(cp); } else { CIMProperty *cp=new CIMProperty(CIMName(str),*cv); ci->addProperty(*cp); } } Catch(jEnv); jEnv->ReleaseStringUTFChars(jN,str); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV) { throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported")); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint rv = -1; try { Uint32 pos = ci->findProperty(CIMName(str)); if (pos != PEG_NOT_FOUND) { CIMProperty *cp = new CIMProperty(ci->getProperty(pos)); rv = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); } } Catch(jEnv); jEnv->ReleaseStringUTFChars(jN,str); return rv; } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); //@HACK //printf("ci->getPropertyCount() = %d\n", ci->getPropertyCount()); for (int i=0,s=ci->getPropertyCount(); igetProperty(i).getName ().getString ().getCString (), // ci->getProperty(i).findQualifier(String("key"))); if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) { CIMProperty *cp = new CIMProperty(ci->getProperty(i)); jint jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop); } } return jVec; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName (JNIEnv *jEnv, jobject jThs, jint jInst) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); const String &cn = ci->getClassName().getString(); jstring str=jEnv->NewStringUTF(cn.getCString()); return str; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint rv = -1; Uint32 pos = ci->findQualifier(String(str)); if (pos!=PEG_NOT_FOUND) { rv = DEBUG_ConvertCToJava (CIMQualifier*, jint, new CIMQualifier(ci->getQualifier(pos))); } jEnv->ReleaseStringUTFChars(jN,str); return rv; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone (JNIEnv *jEnv, jobject jThs, jint jInst) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); CIMInstance *cl = new CIMInstance(ci->clone()); return DEBUG_ConvertCToJava (CIMInstance*, jint, cl); } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); for (int i=0,s=ci->getPropertyCount(); igetProperty(i)); jint jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); jobject prop=jEnv->NewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop); } return jVec; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize (JNIEnv *jEnv, jobject jThs, jint jInst) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); delete ci; DEBUG_ConvertCleanup (jint, jInst); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); CIMInstance *cf = 0; CIMName clsn = ci->getClassName(); if (lo) { cf=new CIMInstance(ci->clone()); CIMName clsn=ci->getClassName(); for (int i=cf->getPropertyCount()-1; i>=0; i--) if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i); return DEBUG_ConvertCToJava (CIMInstance*, jint, cf); } else if (jPl) { CIMPropertyList pl=getList(jEnv,jPl); Array n=pl.getPropertyNameArray(); cf=new CIMInstance(clsn); for (int i=0,s=n.size(); ifindProperty(n[i]); if (pos!=PEG_NOT_FOUND) { if (iq) { CIMProperty cp=ci->getProperty(pos).clone(); if (!ic) cp.setClassOrigin(CIMName()); cf->addProperty(cp); } else { CIMProperty cp=ci->getProperty(pos); CIMName co; if (ic) co=cp.getClassOrigin(); CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(), cp.getReferenceClassName(),co,cp.getPropagated()); cf->addProperty(np); } } } cf->setPath(ci->getPath()); } else if (iq) { cf=new CIMInstance(ci->clone()); if (ic) return DEBUG_ConvertCToJava (CIMInstance*, jint, cf); for (int i=cf->getPropertyCount()-1; i>=0; i--) { CIMProperty cp=cf->getProperty(i); cp.setClassOrigin(CIMName()); cf->removeProperty(i); cf->addProperty(cp); } } else { cf=new CIMInstance(clsn); for (int i=ci->getPropertyCount()-1; i>=0; i--) { CIMProperty cp=ci->getProperty(i); CIMName co; if (ic) co=cp.getClassOrigin(); CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(), cp.getReferenceClassName(),co,cp.getPropagated()); cf->addProperty(np); } cf->setPath(ci->getPath()); } return DEBUG_ConvertCToJava (CIMInstance*, jint, cf); } // ------------------------------------- // --- // - CIMObjectPath // --- // ------------------------------------- CIMObjectPath* construct() { CIMObjectPath *cop = new CIMObjectPath(); _nameSpace n; cop->setNameSpace(n.nameSpace()); cop->setHost(n.hostName()); return cop; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new (JNIEnv *jEnv, jobject jThs) { return DEBUG_ConvertCToJava (CIMObjectPath*, jint, construct()); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn (JNIEnv *jEnv, jobject jThs, jstring jCn) { CIMObjectPath *cop = construct(); const char *str = jEnv->GetStringUTFChars(jCn,NULL); if (str) cop->setClassName(str); jEnv->ReleaseStringUTFChars(jCn,str); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs) { CIMObjectPath *cop = construct(); const char *str1 = NULL; const char *str2 = NULL; try { if (jCn) str1=jEnv->GetStringUTFChars(jCn,NULL); if (jNs) str2=jEnv->GetStringUTFChars(jNs,NULL); if (str1) cop->setClassName(str1); if (str2) cop->setNameSpace(str2); } Catch(jEnv); if (str1) jEnv->ReleaseStringUTFChars(jCn,str1); if (str2) jEnv->ReleaseStringUTFChars(jNs,str2); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi (JNIEnv *jEnv, jobject jThs, jint jInst) { CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jInst); CIMObjectPath *cop = new CIMObjectPath(ci->getPath()); _nameSpace n; if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace()); if (cop->getHost()==NULL) cop->setHost(n.hostName()); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); delete cop; DEBUG_ConvertCleanup (jint, jCop); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const String &hn = cop->getHost(); jstring str=jEnv->NewStringUTF(hn.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jName,NULL); cop->setHost(String(str)); jEnv->ReleaseStringUTFChars(jName,str); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const String &cn = cop->getClassName().getString(); jstring str=jEnv->NewStringUTF(cn.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jName,NULL); cop->setClassName(String(str)); jEnv->ReleaseStringUTFChars(jName,str); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const String &ns = cop->getNameSpace().getString(); jstring str=jEnv->NewStringUTF(ns.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jName) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jName,NULL); cop->setNameSpace(CIMNamespaceName(str)); jEnv->ReleaseStringUTFChars(jName,str); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jId, jint jVal) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jId,NULL); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jVal); Array keyBindings = cop->getKeyBindings(); keyBindings.append(CIMKeyBinding(str,*cv)); cop->setKeyBindings(Array(keyBindings)); jEnv->ReleaseStringUTFChars(jId,str); } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const Array &akb = cop->getKeyBindings(); for (Uint32 i=0,s=akb.size(); iNewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jCp); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,prop); } return jVec; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue (JNIEnv *jEnv, jobject jThs, jint jCop, jstring jStr) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const Array &akb = cop->getKeyBindings(); const char *strKeyName = jEnv->GetStringUTFChars(jStr,NULL); jstring retStr = NULL; for (Uint32 i=0,s=akb.size(); iNewStringUTF(akb[i].getValue().getCString()); break; } } jEnv->ReleaseStringUTFChars(jStr,strKeyName); return retStr; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set (JNIEnv *jEnv, jobject jThs, jstring jStr) { const char *strCop = jEnv->GetStringUTFChars(jStr,NULL); CIMObjectPath *cop = new CIMObjectPath(); cop->set(String(strCop)); jEnv->ReleaseStringUTFChars(jStr,strCop); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, cop); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys (JNIEnv *jEnv, jobject jThs, jint jCop, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); Array akb; for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); iCallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,(i)); jint jCp = jEnv->CallIntMethod(o,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jCp); akb.append(CIMKeyBinding(cp->getName(),cp->getValue())); } cop->setKeyBindings(akb); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMObjectPath *copl = new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings()); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, copl); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString (JNIEnv *jEnv, jobject jThs, jint jCop) { CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const String &ns = cop->toString(); jstring str=jEnv->NewStringUTF(ns.getCString()); return str; } // ------------------------------------- // --- // - CIMDataType // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new (JNIEnv *jEnv, jobject jThs, jint type) { return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type)); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr (JNIEnv *jEnv, jobject jThs, jint type, jint size) { return DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,size)); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef) { const char *ref = jEnv->GetStringUTFChars(jRef,NULL); jint cInst = DEBUG_ConvertCToJava (_dataType*, jint, new _dataType(type,String(ref))); jEnv->ReleaseStringUTFChars(jRef,ref); return cInst; } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); return dt->_array==true; } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); return dt->_reference==true; } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); return dt->_reference==true; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); return dt->_type; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); return dt->_size; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); jstring str = jEnv->NewStringUTF(dt->_refClass.getCString()); return str; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); jstring str = NULL; if (dt->_type & 0x10) { bool fSuccess = false; String tmp = _dataType::convertJavaTypeToChars (dt->_type-0x10, &fSuccess); if (!fSuccess) return str; tmp = tmp + "[]"; str = jEnv->NewStringUTF(tmp.getCString()); } else if (dt->_type == 0x20 + 1) // REFERENCE { String tmp = dt->_refClass + " REF"; str = jEnv->NewStringUTF(tmp.getCString()); } else { bool fSuccess = false; char *tmp = _dataType::convertJavaTypeToChars (dt->_type, &fSuccess); if (!fSuccess) return str; str = jEnv->NewStringUTF(tmp); } return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDataType__1finalize (JNIEnv *jEnv, jobject jThs, jint jDt) { _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); delete dt; DEBUG_ConvertCleanup (jint, jDt); } // ------------------------------------- // --- // - CIMArgument // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue (JNIEnv *jEnv, jobject jThs, jint jP) { CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP); CIMValue *cv = new CIMValue(cp->getValue()); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1new (JNIEnv *jEnv, jobject jThs) { CIMParamValue *p = new CIMParamValue(String::EMPTY,CIMValue()); return DEBUG_ConvertCToJava (CIMParamValue*, jint, p); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS (JNIEnv *jEnv, jobject jThs, jstring jN) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMParamValue *p = new CIMParamValue(str,CIMValue()); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMParamValue*, jint, p); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); CIMParamValue *p = new CIMParamValue(str,cv); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMParamValue*, jint, p); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) { CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); cp->setValue(*cv); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName (JNIEnv *jEnv, jobject jThs, jint jP) { CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP); const String &n = cp->getParameterName(); jstring str = jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN) { CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP); const char *str = jEnv->GetStringUTFChars(jN,NULL); String n(str); cp->setParameterName(n); jEnv->ReleaseStringUTFChars(jN,str); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType (JNIEnv *jEnv, jobject jThs, jint jP) { CIMParamValue *cp = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jP); const CIMValue cv = cp->getValue(); String ref; bool fSuccess = false; int iJType = 0; _dataType *type = 0; iJType = _dataType::convertCTypeToJavaType (cv.getType(), &fSuccess); if (fSuccess) { type = new _dataType (iJType, cv.getArraySize(), false, false, cv.isArray(), ref, true); } return DEBUG_ConvertCToJava (_dataType*, jint, type); } // ------------------------------------- // --- // - CIMProperty // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); CIMValue *cv = new CIMValue(cp->getValue()); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) { CIMProperty *p = new CIMProperty(CIMName(),CIMValue()); return DEBUG_ConvertCToJava (CIMProperty*, jint, p); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) { CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMProperty *cp = 0; jint jCp = -1; try { if (cv->getType()!=CIMTYPE_REFERENCE) { cp=new CIMProperty(String(str),*cv); } else { if (!cv->isArray()) { CIMObjectPath cop; cv->get(cop); cp=new CIMProperty(String(str),*cv,0, cop.getClassName()); } else { throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property"); } } jCp = DEBUG_ConvertCToJava (CIMProperty*, jint, cp); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jN,str); return jCp; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); cp->setValue(*cv); } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); return (jboolean)cp->isArray(); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue (JNIEnv *jEnv, jobject jThs, jint jP, jint jV) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); CIMValue *cvin = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); CIMValue cv = cp->getValue(); if (cvin->isNull()) throwCIMException(jEnv,"+++ null cvin value "); if (!cv.isArray()) throwCIMException(jEnv,"+++ not an array "); if (cvin->getType()!=cv.getType()) throwCIMException(jEnv,"+++ type mismatch "); CIMType type=cv.getType(); switch (type) { case CIMTYPE_BOOLEAN: { Boolean bo; cvin->get(bo); Array boarr; cv.get(boarr); boarr.append(bo); } break; case CIMTYPE_UINT8: { Uint8 u8; cvin->get(u8); Array u8arr; cv.get(u8arr); u8arr.append(u8); } break; case CIMTYPE_SINT8: { Sint8 s8; cvin->get(s8); Array s8arr; cv.get(s8arr); s8arr.append(s8); } break; case CIMTYPE_UINT16: { Uint16 u16; cvin->get(u16); Array u16arr; cv.get(u16arr); u16arr.append(u16); } break; case CIMTYPE_SINT16: { Sint16 s16; cvin->get(s16); Array s16arr; cv.get(s16arr); s16arr.append(s16); } break; case CIMTYPE_UINT32: { Uint32 u32; cvin->get(u32); Array u32arr; cv.get(u32arr); u32arr.append(u32); } break; case CIMTYPE_SINT32: { Sint32 s32; cvin->get(s32); Array s32arr; cv.get(s32arr); s32arr.append(s32); } break; case CIMTYPE_UINT64: { Uint64 u64; cvin->get(u64); Array u64arr; cv.get(u64arr); u64arr.append(u64); } break; case CIMTYPE_SINT64: { Sint64 s64; cvin->get(s64); Array s64arr; cv.get(s64arr); s64arr.append(s64); } break; case CIMTYPE_REAL32: { Real32 f; cvin->get(f); Array farr; cv.get(farr); farr.append(f); } break; case CIMTYPE_REAL64: { Real64 d; cvin->get(d); Array darr; cv.get(darr); darr.append(d); } break; case CIMTYPE_CHAR16: { Char16 c16; cvin->get(c16); Array c16arr; cv.get(c16arr); c16arr.append(c16); } break; case CIMTYPE_STRING: { String str; cvin->get(str); Array strarr; cv.get(strarr); strarr.append(str); } break; case CIMTYPE_DATETIME: { CIMDateTime dt; cvin->get(dt); Array dtarr; cv.get(dtarr); dtarr.append(dt); } break; case CIMTYPE_REFERENCE: { CIMObjectPath ref; cvin->get(ref); Array refarr; cv.get(refarr); refarr.append(ref); } break; case CIMTYPE_OBJECT: { CIMObject obj; cvin->get(obj); Array objarr; cv.get(objarr); objarr.append(obj); } break; default: throwCIMException(jEnv,"+++ unsupported type "); } } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ); cp->addQualifier(*cq); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); const String &n = cp->getName().getString(); jstring str = jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); const char *str = jEnv->GetStringUTFChars(jN,NULL); cp->setName(CIMName(str)); jEnv->ReleaseStringUTFChars(jN,str); } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); return (jboolean)(cp->getType()==CIMTYPE_REFERENCE); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); const String &n = cp->getReferenceClassName().getString(); jstring str=jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); String ref = cp->getReferenceClassName().getString(); bool fSuccess = false; int iJType = 0; _dataType *type = 0; iJType = _dataType::convertCTypeToJavaType (cp->getType(), &fSuccess); if (fSuccess) { type = new _dataType (iJType, cp->getArraySize(), ref.size() ? true : false, false, cp->isArray(), ref, true); } return DEBUG_ConvertCToJava (_dataType*, jint, type); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); _dataType *dt = DEBUG_ConvertJavaToC (jint, _dataType*, jDt); CIMValue val; bool fSuccess = false; CIMType cType = CIMTYPE_BOOLEAN; cType = _dataType::convertJavaTypeToCType (dt->_type, &fSuccess); if (fSuccess) { val.setNullValue (cType, dt->_array); CIMProperty *np = new CIMProperty (cp->getName (), val); delete cp; return DEBUG_ConvertCToJava (CIMProperty*, jint, np); } else { return DEBUG_ConvertCToJava (CIMProperty*, jint, cp); } } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); const String &n = cp->getName().getString(); jstring str = jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize (JNIEnv *jEnv, jobject jThs, jint jP) { CIMProperty *cp = DEBUG_ConvertJavaToC (jint, CIMProperty*, jP); delete cp; DEBUG_ConvertCleanup (jint, jP); } // ------------------------------------- // --- // - CIMQualifierType // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new (JNIEnv *jEnv, jobject jThs) { CIMQualifierDecl *qual = new CIMQualifierDecl(); return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, qual); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize (JNIEnv *jEnv, jobject jThs, jint jQ) { CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ); delete qt; DEBUG_ConvertCleanup (jint, jQ); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName (JNIEnv *jEnv, jobject jThs, jint jQ) { CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ); const String &n = qt->getName().getString(); jstring str = jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN) { CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ); const char *str = jEnv->GetStringUTFChars(jN,NULL); jint jret = 0; if (qt->isUninitialized()) { CIMQualifierDecl *nqt = new CIMQualifierDecl(CIMName(str),CIMValue(),CIMScope()); jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt); } else { qt->setName(CIMName(str)); CIMQualifierDecl *nqt = new CIMQualifierDecl(*qt); jret = DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, nqt); } jEnv->ReleaseStringUTFChars(jN,str); return jret; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) { CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); qt->setValue(*cv); } // ------------------------------------- // --- // - CIMQualifier // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new (JNIEnv *jEnv, jobject jThs, jstring jN) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue()); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMQualifier*, jint, qual); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize (JNIEnv *jEnv, jobject jThs, jint jQ) { CIMQualifier *cq=DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ); delete cq; DEBUG_ConvertCleanup (jint, jQ); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName (JNIEnv *jEnv, jobject jThs, jint jQ) { CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ); const String &n = cq->getName().getString(); jstring str = jEnv->NewStringUTF(n.getCString()); return str; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue (JNIEnv *jEnv, jobject jThs, jint jQ) { CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ); CIMValue *cv = new CIMValue(cq->getValue()); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) { CIMQualifier *cq = DEBUG_ConvertJavaToC (jint, CIMQualifier*, jQ); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); cq->setValue(*cv); } // ------------------------------------- // --- // - CIMDateTime // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime (JNIEnv *jEnv, jobject jThs, jstring jN) { const char *str = jEnv->GetStringUTFChars(jN,NULL); CIMDateTime *dt = 0; if (strlen(str)==0) dt=new CIMDateTime(); else dt=new CIMDateTime(String(str)); jEnv->ReleaseStringUTFChars(jN,str); return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty (JNIEnv *jEnv, jobject jThs) { CIMDateTime *dt = new CIMDateTime(CIMDateTime::getCurrentDateTime ()); return DEBUG_ConvertCToJava (CIMDateTime*, jint, dt); } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after (JNIEnv *jEnv, jobject jThs, jint jC, jint jD) { CIMDateTime *ct = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jC); CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jD); return (jboolean)(ct->getDifference(*ct, *dt)>0); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize (JNIEnv *jEnv, jobject jThs, jint jDT) { CIMDateTime *cdt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT); delete cdt; DEBUG_ConvertCleanup (jint, jDT); } // ------------------------------------- // --- // - CIMMethod // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType (JNIEnv *jEnv, jobject jThs, jint jM) { CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM); return DEBUG_ConvertCToJava (CIMType, jint, new CIMType (cm->getType())); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize (JNIEnv *jEnv, jobject jThs, jint jM) { CIMMethod *cm = DEBUG_ConvertJavaToC (jint, CIMMethod*, jM); delete cm; DEBUG_ConvertCleanup (jint, jM); } // ------------------------------------- // --- // - CIMValue // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned) { CIMValue *cv = NULL; if (notSigned) cv=new CIMValue((Uint8)jb); else cv=new CIMValue((Sint8)jb); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned) { CIMValue *cv = NULL; if (notSigned) cv=new CIMValue((Uint16)js); else cv=new CIMValue((Sint16)js); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1makeInt (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned) { CIMValue *cv = NULL; if (notSigned) cv = new CIMValue((Uint32)ji); else cv = new CIMValue((Sint32)ji); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned) { CIMValue *cv = NULL; if (notSigned) cv=new CIMValue((Uint64)jl); else cv=new CIMValue((Sint64)jl); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float (JNIEnv *jEnv, jobject jThs, jfloat jF) { CIMValue *cv = new CIMValue(jF); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double (JNIEnv *jEnv, jobject jThs, jdouble jD) { CIMValue *cv = new CIMValue(jD); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string (JNIEnv *jEnv, jobject jThs, jstring jS) { const char *str = jEnv->GetStringUTFChars(jS,NULL); CIMValue *cv = new CIMValue(String(str)); jEnv->ReleaseStringUTFChars(jS,str); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1cop (JNIEnv *jEnv, jobject jThs, jint jR) { CIMObjectPath *ref = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jR); CIMValue *cv = new CIMValue(*ref); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime (JNIEnv *jEnv, jobject jThs, jint jDT) { CIMDateTime *dt = DEBUG_ConvertJavaToC (jint, CIMDateTime*, jDT); CIMValue *cv = new CIMValue(*dt); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16 (JNIEnv *jEnv, jobject jThs, jchar jChar16) { Char16 c16 (jChar16); CIMValue *cv = new CIMValue(c16); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1object (JNIEnv *jEnv, jobject jThs, jint jO) { CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jO); CIMValue *cv = new CIMValue(*co); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray (JNIEnv *jEnv, jobject jThs, jint jP) { CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP); return (jboolean)cv->isArray(); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean (JNIEnv *jEnv, jobject jThs, jboolean jB) { CIMValue *cv = new CIMValue((Boolean)jB); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jshortA); jshort *jsA = jEnv->GetShortArrayElements(jshortA,&b); if (notSigned) { Array u8; for (jsize i=0;i s8; for (jsize i=0;iReleaseShortArrayElements(jshortA, jsA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jintA); jint *jiA = jEnv->GetIntArrayElements(jintA,&b); if (notSigned) { Array u16; for (jsize i=0;i s16; for (jsize i=0;iReleaseIntArrayElements(jintA, jiA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jlongA); jlong *jlA = jEnv->GetLongArrayElements(jlongA,&b); if (notSigned) { Array u32; for (jsize i=0;i s32; for (jsize i=0;iReleaseLongArrayElements(jlongA, jlA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jlongA); jlong *jlA = jEnv->GetLongArrayElements(jlongA,&b); if (notSigned) { Array u64; for (jsize i=0;i s64; for (jsize i=0;iReleaseLongArrayElements(jlongA, jlA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA) { CIMValue *cv = NULL; jsize len = jEnv->GetArrayLength(jstringA); Array strA; for (jsize i=0;iGetObjectArrayElement(jstringA,i); const char *str = jEnv->GetStringUTFChars(jsA,NULL); strA.append(String(str)); jEnv->ReleaseStringUTFChars(jsA,str); } cv = new CIMValue(strA); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jboolA); jboolean *jbA = jEnv->GetBooleanArrayElements(jboolA,&b); Array bA; for (jsize i=0;iReleaseBooleanArrayElements(jboolA, jbA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1floatArray (JNIEnv *jEnv, jobject jThs, jfloatArray jfloatA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jfloatA); jfloat *jfA = jEnv->GetFloatArrayElements(jfloatA,&b); Array fA; for (jsize i=0;iReleaseFloatArrayElements(jfloatA, jfA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1doubleArray (JNIEnv *jEnv, jobject jThs, jdoubleArray jdoubleA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jdoubleA); jdouble *jdA = jEnv->GetDoubleArrayElements(jdoubleA,&b); Array dA; for (jsize i=0;iReleaseDoubleArrayElements(jdoubleA, jdA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1copArray (JNIEnv *jEnv, jobject jThs, jintArray jintA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jintA); jint *jiA = jEnv->GetIntArrayElements(jintA,&b); Array cA; for (jsize i=0;iReleaseIntArrayElements(jintA, jiA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetimeArray (JNIEnv *jEnv, jobject jThs, jintArray jintA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jintA); jint *jiA = jEnv->GetIntArrayElements(jintA,&b); Array cA; for (jsize i=0;iReleaseIntArrayElements(jintA, jiA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1objectArray (JNIEnv *jEnv, jobject jThs, jintArray jintA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jintA); jint *jiA = jEnv->GetIntArrayElements(jintA,&b); Array cA; for (jsize i=0;iReleaseIntArrayElements(jintA, jiA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1char16Array (JNIEnv *jEnv, jobject jThs, jcharArray jcharA) { CIMValue *cv = NULL; jboolean b; jsize len = jEnv->GetArrayLength(jcharA); jchar *jcA = jEnv->GetCharArrayElements(jcharA,&b); Array cA; for (jsize i=0;iReleaseCharArrayElements(jcharA, jcA, len); return DEBUG_ConvertCToJava (CIMValue*, jint, cv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType (JNIEnv *jEnv, jobject jThs, jint jP) { CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jP); bool fSuccess = false; int iJType = 0; iJType = _dataType::convertCTypeToJavaType (cv->getType(), &fSuccess); return DEBUG_ConvertCToJava (int, jint, iJType); } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString (JNIEnv *jEnv, jobject jThs, jint jV) { CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); return (jstring)jEnv->NewStringUTF(cv->toString().getCString()); } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue (JNIEnv *jEnv, jobject jThs, jint jV) { JMPIjvm::cacheIDs(jEnv); CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); if (cv->isNull ()) return NULL; CIMType type = cv->getType (); if (!cv->isArray ()) { switch (type) { case CIMTYPE_BOOLEAN: Boolean bo; cv->get(bo); return jEnv->NewObject (JMPIjvm::jv.BooleanClassRef, JMPIjvm::jv.BooleanNewZ, bo); case CIMTYPE_SINT8: Sint8 s8; cv->get(s8); return jEnv->NewObject (JMPIjvm::jv.ByteClassRef, JMPIjvm::jv.ByteNewB, s8); case CIMTYPE_UINT8: Uint8 u8; cv->get(u8); return jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef, JMPIjvm::jv.UnsignedInt8NewS, u8); case CIMTYPE_SINT16: Sint16 s16; cv->get(s16); return jEnv->NewObject (JMPIjvm::jv.ShortClassRef, JMPIjvm::jv.ShortNewS, s16); case CIMTYPE_UINT16: Uint16 u16; cv->get(u16); return jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef, JMPIjvm::jv.UnsignedInt16NewI, u16); case CIMTYPE_SINT32: Sint32 s32; cv->get(s32); return jEnv->NewObject (JMPIjvm::jv.IntegerClassRef, JMPIjvm::jv.IntegerNewI, s32); case CIMTYPE_UINT32: Uint32 u32; cv->get(u32); return jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef, JMPIjvm::jv.UnsignedInt32NewJ, u32); case CIMTYPE_SINT64: Sint64 s64; cv->get(s64); return jEnv->NewObject (JMPIjvm::jv.LongClassRef, JMPIjvm::jv.LongNewJ, s64); case CIMTYPE_UINT64: { Uint64 u64; cv->get(u64); jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef, JMPIjvm::jv.BigIntegerValueOf, u64); return jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef, JMPIjvm::jv.UnsignedInt64NewBi, jBIG); } case CIMTYPE_REAL32: float f; cv->get(f); return jEnv->NewObject (JMPIjvm::jv.FloatClassRef, JMPIjvm::jv.FloatNewF, f); case CIMTYPE_REAL64: double d; cv->get(d); return jEnv->NewObject (JMPIjvm::jv.DoubleClassRef, JMPIjvm::jv.DoubleNewD, d); case CIMTYPE_STRING: { String s; cv->get(s); return jEnv->NewStringUTF(s.getCString()); } case CIMTYPE_REFERENCE: { CIMObjectPath ref; cv->get(ref); jint jOp = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref)); return jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef, JMPIjvm::jv.CIMObjectPathNewI, jOp); } case CIMTYPE_CHAR16: { Char16 c16; cv->get(c16); return jEnv->NewObject (JMPIjvm::jv.CharacterClassRef, JMPIjvm::jv.CharacterNewC, (jchar)c16); } case CIMTYPE_DATETIME: { CIMDateTime dt; cv->get(dt); jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt)); return jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef, JMPIjvm::jv.CIMDateTimeNewI, jDT); } case CIMTYPE_OBJECT: { CIMObject co; cv->get(co); if (co.isClass ()) { jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co)); return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef, JMPIjvm::jv.CIMObjectNewIZ, jCC, (jboolean)true); } else { jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co)); return jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef, JMPIjvm::jv.CIMObjectNewIZ, jCI, (jboolean)false); } } default: throwCIMException(jEnv,"+++ unsupported type: "); } } else { switch (type) { case CIMTYPE_BOOLEAN: { Array bo; cv->get(bo); int s = bo.size(); jobjectArray jbooleanA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.BooleanClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i, jEnv->NewObject (JMPIjvm::jv.BooleanClassRef, JMPIjvm::jv.BooleanNewZ, bo[i])); return jbooleanA; } case CIMTYPE_SINT8: { Array s8; cv->get(s8); int s = s8.size(); jobjectArray jbyteA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.ByteClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jbyteA, i, jEnv->NewObject (JMPIjvm::jv.ByteClassRef, JMPIjvm::jv.ByteNewB, s8[i])); return jbyteA; } case CIMTYPE_UINT8: { Array u8; cv->get(u8); int s = u8.size(); jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.UnsignedInt8ClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jshortA, i, jEnv->NewObject (JMPIjvm::jv.UnsignedInt8ClassRef, JMPIjvm::jv.UnsignedInt8NewS, u8[i])); return jshortA; } case CIMTYPE_SINT16: { Array s16; cv->get(s16); int s = s16.size(); jobjectArray jshortA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.ShortClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jshortA, i, jEnv->NewObject (JMPIjvm::jv.ShortClassRef, JMPIjvm::jv.ShortNewS, s16[i])); return jshortA; } case CIMTYPE_UINT16: { Array u16; cv->get(u16); int s = u16.size(); jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.UnsignedInt16ClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jintA, i, jEnv->NewObject (JMPIjvm::jv.UnsignedInt16ClassRef, JMPIjvm::jv.UnsignedInt16NewI, u16[i])); return jintA; } case CIMTYPE_SINT32: { Array s32; cv->get(s32); int s = s32.size(); jobjectArray jintA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.IntegerClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jintA, i, jEnv->NewObject (JMPIjvm::jv.IntegerClassRef, JMPIjvm::jv.IntegerNewI, s32[i])); return jintA; } case CIMTYPE_UINT32: { Array u32; cv->get(u32); int s = u32.size(); jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.UnsignedInt32ClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jlongA, i, jEnv->NewObject (JMPIjvm::jv.UnsignedInt32ClassRef, JMPIjvm::jv.UnsignedInt32NewJ, u32[i])); return jlongA; } case CIMTYPE_SINT64: { Array s64; cv->get(s64); int s = s64.size(); jobjectArray jlongA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.LongClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jlongA, i, jEnv->NewObject (JMPIjvm::jv.LongClassRef, JMPIjvm::jv.LongNewJ, s64[i])); return jlongA; } case CIMTYPE_UINT64: { Array u64; cv->get(u64); int s = u64.size(); jobjectArray ju64A = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.UnsignedInt64ClassRef, 0); for (int i=0; i < s; i++) { jobject jBIG = jEnv->CallStaticObjectMethod (JMPIjvm::jv.BigIntegerClassRef, JMPIjvm::jv.BigIntegerValueOf, u64[i]); jEnv->SetObjectArrayElement (ju64A, i, jEnv->NewObject (JMPIjvm::jv.UnsignedInt64ClassRef, JMPIjvm::jv.UnsignedInt64NewBi, jBIG)); } return ju64A; } case CIMTYPE_REAL32: { Array r32; cv->get(r32); int s = r32.size(); jobjectArray jfloatA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.FloatClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jfloatA, i, jEnv->NewObject (JMPIjvm::jv.FloatClassRef, JMPIjvm::jv.FloatNewF, r32[i])); return jfloatA; } case CIMTYPE_REAL64: { Array r64; cv->get(r64); int s = r64.size(); jobjectArray jdoubleA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.DoubleClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jdoubleA, i, jEnv->NewObject (JMPIjvm::jv.DoubleClassRef, JMPIjvm::jv.DoubleNewD, r64[i])); return jdoubleA; } case CIMTYPE_STRING: { Array str; cv->get(str); int s = str.size(); jobjectArray jstringA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.StringClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jstringA, i, jEnv->NewStringUTF (str[i].getCString())); return jstringA; } case CIMTYPE_REFERENCE: { Array ref; cv->get(ref); int s = ref.size(); jobjectArray jrefA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.CIMObjectPathClassRef, 0); for (int i=0; i < s; i++) { jint jOP = DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(ref[i])); jEnv->SetObjectArrayElement (jrefA, i, jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef, JMPIjvm::jv.CIMObjectPathNewI, jOP)); } return jrefA; } case CIMTYPE_CHAR16: { Array c16; cv->get(c16); int s = c16.size(); jobjectArray jc16A = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.CharacterClassRef, 0); for (int i=0; i < s; i++) jEnv->SetObjectArrayElement (jc16A, i, jEnv->NewObject (JMPIjvm::jv.CharacterClassRef, JMPIjvm::jv.CharacterNewC, (jchar)c16[i])); return jc16A; } case CIMTYPE_DATETIME: { Array dt; cv->get(dt); int s = dt.size(); jobjectArray jdtA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.CIMDateTimeClassRef, 0); for (int i=0; i < s; i++) { jint jDT = DEBUG_ConvertCToJava (CIMDateTime*, jint, new CIMDateTime(dt[i])); jEnv->SetObjectArrayElement (jdtA, i, jEnv->NewObject (JMPIjvm::jv.CIMDateTimeClassRef, JMPIjvm::jv.CIMDateTimeNewI, jDT)); } return jdtA; } case CIMTYPE_OBJECT: { Array co; cv->get(co); int s = co.size(); jobjectArray jcoA = (jobjectArray)jEnv->NewObjectArray (s, JMPIjvm::jv.CIMObjectClassRef, 0); for (int i=0; i < s; i++) { if (co[i].isClass ()) { jint jCC = DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(co[i])); jEnv->SetObjectArrayElement (jcoA, i, jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef, JMPIjvm::jv.CIMObjectNewIZ, jCC, (jboolean)true)); } else { jint jCI = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(co[i])); jEnv->SetObjectArrayElement (jcoA, i, jEnv->NewObject (JMPIjvm::jv.CIMObjectClassRef, JMPIjvm::jv.CIMObjectNewIZ, jCI, (jboolean)false)); } } return jcoA; } default: throwCIMException(jEnv,"+++ unsupported type: "); } } return NULL; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize (JNIEnv *jEnv, jobject jThs, jint jV) { CIMValue *cv = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); delete cv; DEBUG_ConvertCleanup (jint, jV); } // ------------------------------------- // --- // - CIMNameSpace // --- // ------------------------------------- _nameSpace::_nameSpace() { port_=0; hostName_=System::getHostName(); nameSpace_="root/cimv2"; } _nameSpace::_nameSpace(String hn) { port_=0; hostName_=hn; nameSpace_="root/cimv2"; } _nameSpace::_nameSpace(String hn, String ns) { port_=0; hostName_=hn; nameSpace_=ns; } int _nameSpace::port() { if (port_) return port_; port_=5988; if (hostName_.subString(0,7)=="http://") { protocol_="http://"; hostName_=hostName_.subString(7); } Sint32 p=hostName_.reverseFind(':'); if (p>=0) { if ((hostName_[p+1] >= '0') && (hostName_[p+1] <= '9')) port_=atoi(hostName_.subString(p+1).getCString()); hostName_.remove(p); } return port_; } String _nameSpace::hostName() { port(); return hostName_; } String _nameSpace::nameSpace() { return nameSpace_; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new (JNIEnv *jEnv, jobject jThs) { return DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace()); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn (JNIEnv *jEnv, jobject jThs, jstring jHn) { const char *hn = jEnv->GetStringUTFChars(jHn,NULL); jint cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(hn)); jEnv->ReleaseStringUTFChars(jHn,hn); return cInst; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs) { const char *hn = jEnv->GetStringUTFChars(jHn,NULL); const char *ns = jEnv->GetStringUTFChars(jNs,NULL); jint cInst = DEBUG_ConvertCToJava (_nameSpace*, jint, new _nameSpace(String(hn),String(ns))); jEnv->ReleaseStringUTFChars(jHn,hn); jEnv->ReleaseStringUTFChars(jNs,ns); return cInst; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost (JNIEnv *jEnv, jobject jThs, jint jNs) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); const String &hn = cNs->hostName_; jstring str = jEnv->NewStringUTF(hn.getCString()); return str; } JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace (JNIEnv *jEnv, jobject jThs, jint jNs) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); const String &ns = cNs->nameSpace_; jstring str = jEnv->NewStringUTF(ns.getCString()); return str; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); const char *str = jEnv->GetStringUTFChars(jHn,NULL); cNs->port_=0; cNs->hostName_=str; jEnv->ReleaseStringUTFChars(jHn,str); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); const char *str = jEnv->GetStringUTFChars(jN,NULL); cNs->nameSpace_=str; jEnv->ReleaseStringUTFChars(jN,str); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1finalize (JNIEnv *jEnv, jobject jThs, jint jNs) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); delete cNs; DEBUG_ConvertCleanup (jint, jNs); } // ------------------------------------- // --- // - Enumerators // --- // ------------------------------------- JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass((*enm)[pos])); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size (JNIEnv *jEnv, jobject jThs, jint jEnum) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return enm->size(); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance((*enm)[pos])); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size (JNIEnv *jEnv, jobject jThs, jint jEnum) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return enm->size(); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath((*enm)[pos])); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size (JNIEnv *jEnv, jobject jThs, jint jEnum) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return enm->size(); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, new CIMQualifierDecl((*enm)[pos])); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size (JNIEnv *jEnv, jobject jThs, jint jEnum) { Array *enm = DEBUG_ConvertJavaToC (jint, Array*, jEnum); return enm->size(); } // ------------------------------------- // --- // - CIMClient // --- // ------------------------------------- void checkNs(CIMObjectPath *cop, jint jNs) { if (cop->getNameSpace().isNull()) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); cop->setNameSpace(CIMNamespaceName(cNs->nameSpace())); } } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw) { _nameSpace *cNs = DEBUG_ConvertJavaToC (jint, _nameSpace*, jNs); const char *un = jEnv->GetStringUTFChars(jUn,NULL); const char *pw = jEnv->GetStringUTFChars(jPw,NULL); jint jCc = 0; try { CIMClient *cc=new CIMClient(); cc->connect(cNs->hostName(),cNs->port(),un,pw); jCc = DEBUG_ConvertCToJava (CIMClient*, jint, cc); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jUn,un); jEnv->ReleaseStringUTFChars(jPw,pw); return jCc; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect (JNIEnv *jEnv, jobject jThs, jint jCc) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); try { cCc->disconnect(); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl=getList(jEnv,jPl); try { checkNs(cop,jNs); CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo, (Boolean)iq,(Boolean)ic,pl); return DEBUG_ConvertCToJava (CIMClass*, jint, new CIMClass(cls)); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); cCc->deleteClass(cop->getNameSpace(),cop->getClassName()); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMClass *cl = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl); try { cCc->createClass(cop->getNameSpace(),*cl); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMClass *cl = DEBUG_ConvertJavaToC (jint, CIMClass*, jCl); try { checkNs(cop,jNs); cCc->modifyClass(cop->getNameSpace(),*cl); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); Array enm=cCc->enumerateClasses( cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMNamespaceName ns = cop->getNameSpace(); try { checkNs(cop,jNs); Array enm=cCc->enumerateClassNames(ns,cop->getClassName(),(Boolean)deep); Array *enmop=new Array(); for (int i=0,m=enm.size(); iappend(CIMObjectPath(String::EMPTY,ns,enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmop); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); Array enm=cCc->enumerateQualifiers(cop->getNameSpace()); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl = getList(jEnv,jPl); try { checkNs(cop,jNs); CIMInstance inst=cCc->getInstance(cop->getNameSpace(), *cop, (Boolean)lo, (Boolean)iq, (Boolean)ic, pl); return DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance(inst)); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); cCc->deleteInstance(cop->getNameSpace(),*cop); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); try { checkNs(cop,jNs); ci->setPath(*cop); CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci); return DEBUG_ConvertCToJava (CIMObjectPath*, jint, new CIMObjectPath(obj)); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi, jboolean iq, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); CIMPropertyList pl = getList(jEnv,jPl); try { checkNs(cop,jNs); ci->setPath(*cop); cCc->modifyInstance(cop->getNameSpace(),*ci,(Boolean)iq,pl); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl = getList(jEnv,jPl); try { checkNs(cop,jNs); CIMPropertyList props; Array enm=cCc->enumerateInstances( cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic,pl); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); Array enm=cCc->enumerateInstanceNames( cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName())); return DEBUG_ConvertCToJava (CIMQualifierDecl*, jint, val); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); try { checkNs(cop,jNs); cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName()); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jint, CIMQualifierDecl*, jQ); try { checkNs(cop,jNs); cCc->setQualifier(cop->getNameSpace(),*qt); } Catch(jEnv); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jPn,NULL); CIMName pName(str); jint jCv = 0; try { checkNs(cop,jNs); CIMValue *val = new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName)); jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jPn,str); return jCv; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMValue *val = DEBUG_ConvertJavaToC (jint, CIMValue*, jV); const char *str = jEnv->GetStringUTFChars(jPn,NULL); CIMName pName(str); try { checkNs(cop,jNs); cCc->setProperty(cop->getNameSpace(),*cop,pName,*val); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jPn,str); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut) { JMPIjvm::cacheIDs(jEnv); CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jMn,NULL); CIMName method(str); jint jCv = 0; Array in; Array out; for (int i=0,m=jEnv->CallIntMethod(jIn,JMPIjvm::jv.VectorSize); iCallObjectMethod(jIn,JMPIjvm::jv.VectorElementAt,i); JMPIjvm::checkException(jEnv); jint jp = jEnv->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jp); JMPIjvm::checkException(jEnv); in.append(CIMParamValue(p->getName().getString(),p->getValue())); } try { checkNs(cop,jNs); CIMValue *val = new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out)); for (int i=0,m=out.size(); iNewObject(JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewI,jp); jEnv->CallVoidMethod(jOut,JMPIjvm::jv.VectorAddElement,prop); } jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jMn,str); return jCv; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobjectArray jIn, jobjectArray jOut) { JMPIjvm::cacheIDs(jEnv); CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jMn,NULL); CIMName method(str); jint jCv = 0; Array in; Array out; for (int i=0,m=jEnv->GetArrayLength(jIn); iGetObjectArrayElement(jIn,i); JMPIjvm::checkException(jEnv); jint jp = jEnv->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst); CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jp); JMPIjvm::checkException(jEnv); in.append(*p); } try { checkNs(cop,jNs); CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out)); for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); iSetObjectArrayElement(jOut, i, jEnv->NewObject(JMPIjvm::jv.CIMArgumentClassRef,JMPIjvm::jv.CIMArgumentNewI,jParm)); } jCv = DEBUG_ConvertCToJava (CIMValue*, jint, val); } Catch(jEnv); jEnv->ReleaseStringUTFChars(jMn,str); return jCv; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jQuery,NULL); String query(str); /* @NOTE ** This does not work for some reason on the client java code: ** DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::Java_org_pegasus_jmpi_CIMClient__1execQuery: jEnv = "< ** set fLoop = 0 */ jEnv->ReleaseStringUTFChars(jQuery,str); str=jEnv->GetStringUTFChars(jQl,NULL); String ql(str); jEnv->ReleaseStringUTFChars(jQl,str); try { checkNs(cop,jNs); Array enm=cCc->execQuery(cop->getNameSpace(),ql,query); Array *enmInst=new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jResultClass,NULL); CIMName resultClass(str); jEnv->ReleaseStringUTFChars(jResultClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); str=jEnv->GetStringUTFChars(jResultRole,NULL); String resultRole(str); jEnv->ReleaseStringUTFChars(jResultRole,str); try { checkNs(cop,jNs); Array enm=cCc->associatorNames( cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole, jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl = getList(jEnv,jPl); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jResultClass,NULL); CIMName resultClass(str); jEnv->ReleaseStringUTFChars(jResultClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); str=jEnv->GetStringUTFChars(jResultRole,NULL); String resultRole(str); jEnv->ReleaseStringUTFChars(jResultRole,str); try { checkNs(cop,jNs); Array enm=cCc->associators( cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole, (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl); Array *enmInst=new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jAssocClass, jstring jRole) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); try { checkNs(cop,jNs); Array enm=cCc->referenceNames( cop->getNameSpace(),*cop,assocClass,role); return DEBUG_ConvertCToJava (Array*, jint, new Array(enm)); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jAssocClass, jstring jRole, jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); CIMPropertyList pl = getList(jEnv,jPl); const char *str = jEnv->GetStringUTFChars(jAssocClass,NULL); CIMName assocClass(str); jEnv->ReleaseStringUTFChars(jAssocClass,str); str=jEnv->GetStringUTFChars(jRole,NULL); String role(str); jEnv->ReleaseStringUTFChars(jRole,str); try { checkNs(cop,jNs); Array enm=cCc->references( cop->getNameSpace(),*cop,assocClass,role, (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl); Array *enmInst=new Array(); for (int i=0,m=enm.size(); iappend(CIMInstance(enm[i])); } return DEBUG_ConvertCToJava (Array*, jint, enmInst); } Catch(jEnv); return 0; } static int normalizeNs(String &ns, String &nsBase, String &lastNsComp) { Uint32 n=ns.size(); if (ns[n-1]=='/') { if (n>=2) ns=ns.subString(0,n-2); } lastNsComp=ns; nsBase="root"; n=ns.reverseFind('/'); if (n!=PEG_NOT_FOUND) { lastNsComp=ns.subString(n+1); nsBase=ns.subString(0,n); } return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); const char *str = jEnv->GetStringUTFChars(jNs,NULL); String ns(str); jEnv->ReleaseStringUTFChars(jNs,str); String lastNsComp; String nsBase; normalizeNs(ns,nsBase,lastNsComp); CIMInstance newInstance(CIMName("__Namespace")); newInstance.addProperty(CIMProperty(CIMName ("name"),lastNsComp)); try { cCc->createInstance(CIMNamespaceName(nsBase),newInstance); } Catch(jEnv); } JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec) { JMPIjvm::cacheIDs(jEnv); CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCop); String ns = cop->getNameSpace().getString(); try { Array enm=cCc->enumerateInstanceNames( cop->getNameSpace(),CIMName("__Namespace")); for (int i=0,s=enm.size(); i& kb=cop.getKeyBindings(); const String &n=kb[0].getValue(); if (!deep && n.find('/')!=PEG_NOT_FOUND) continue; String x=ns+"/"+n; jstring str=jEnv->NewStringUTF(x.getCString()); jEnv->CallVoidMethod(jVec,JMPIjvm::jv.VectorAddElement,str); } } Catch(jEnv); return jVec; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); const char *str = jEnv->GetStringUTFChars(jNs,NULL); String ns(str); jEnv->ReleaseStringUTFChars(jNs,str); String lastNsComp; String nsBase; normalizeNs(ns,nsBase,lastNsComp); CIMObjectPath cop(String::EMPTY,CIMNamespaceName(nsBase),CIMName("__Namespace")); Array kb; kb.append(CIMKeyBinding(("Name"),CIMValue(lastNsComp))); cop.setKeyBindings(kb); try { cCc->deleteInstance(CIMNamespaceName(nsBase),cop); } Catch(jEnv); } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1finalize (JNIEnv *jEnv, jobject jThs, jint jCc) { CIMClient *cCc = DEBUG_ConvertJavaToC (jint, CIMClient*, jCc); delete cCc; DEBUG_ConvertCleanup (jint, jCc); } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newClass (JNIEnv *jEnv, jobject jThs, jobject jCc) { CIMClass *cCc = DEBUG_ConvertJavaToC (jint, CIMClass*, jCc); try { CIMObject *cCo = new CIMObject (*cCc); return DEBUG_ConvertCToJava (CIMObject*, jint, cCo); } Catch(jEnv); return 0; } JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObject__1newInstance (JNIEnv *jEnv, jobject jThs, jobject jCi) { CIMInstance *cCi = DEBUG_ConvertJavaToC (jint, CIMInstance*, jCi); try { CIMObject *cCo = new CIMObject (*cCi); return DEBUG_ConvertCToJava (CIMObject*, jint, cCo); } Catch(jEnv); return 0; } JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObject__1finalize (JNIEnv *jEnv, jobject jThs, jint jInst) { CIMObject *co = DEBUG_ConvertJavaToC (jint, CIMObject*, jInst); delete co; DEBUG_ConvertCleanup (jint, jInst); } /* * Class: OperationContext * Method: _get * Signature: (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object; */ JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_OperationContext__1get (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jContainer, jstring jKey) { OperationContext *poc = DEBUG_ConvertJavaToC (jint, OperationContext*, jInst); jobject jRet = 0; if (!poc) { return jRet; } const char *pszContainer = jEnv->GetStringUTFChars (jContainer, NULL); const char *pszKey = jEnv->GetStringUTFChars (jKey, NULL); String container (pszContainer); String key (pszKey); ///printf ("container: %s\n", pszContainer); ///printf ("key: %s\n", pszKey); try { if (container == "IdentityContainer") { IdentityContainer ic = poc->get (IdentityContainer::NAME); /////////printf ("ic\n"); if (key == "userName") { String userName = ic.getUserName (); ////////////printf ("userName: %s\n", (const char*)userName.getCString ()); jRet = jEnv->NewStringUTF ((const char*)userName.getCString ()); } } else if (container == "SubscriptionInstanceContainer") { SubscriptionInstanceContainer sic = poc->get (SubscriptionInstanceContainer::NAME); if (key == "subscriptionInstance") { CIMInstance ci = sic.getInstance (); jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, new CIMInstance (ci)); jRet = jEnv->NewObject (JMPIjvm::jv.CIMInstanceClassRef, JMPIjvm::jv.CIMInstanceNewI, jciRef); } } else if (container == "SubscriptionInstanceNamesContainer") { SubscriptionInstanceNamesContainer sinc = poc->get (SubscriptionInstanceNamesContainer::NAME); if (key == "subscriptionInstanceNames") { Array copa = sinc.getInstanceNames (); jobjectArray jcopa = 0; int jcopaLength = copa.size (); jcopa = jEnv->NewObjectArray (jcopaLength, JMPIjvm::jv.CIMObjectPathClassRef, 0); for (int i = 0; i < jcopaLength; i++) { jEnv->SetObjectArrayElement (jcopa, i, jEnv->NewObject (JMPIjvm::jv.CIMObjectPathClassRef, JMPIjvm::jv.CIMObjectPathNewI, new CIMObjectPath (copa[i]))); } jRet = (jobject)jcopa; } } else if (container == "SubscriptionFilterConditionContainer") { SubscriptionFilterConditionContainer sfcc = poc->get (SubscriptionFilterConditionContainer::NAME); /////////printf ("sfcc\n"); if (key == "filterCondition") { String filterCondition = sfcc.getFilterCondition (); ////////////printf ("filterCondition: %s\n", (const char*)filterCondition.getCString ()); jRet = jEnv->NewStringUTF ((const char*)filterCondition.getCString ()); } else if (key == "queryLanguage") { String queryLanguage = sfcc.getQueryLanguage (); jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ()); } } else if (container == "SubscriptionFilterQueryContainer") { SubscriptionFilterQueryContainer sfqc = poc->get (SubscriptionFilterQueryContainer::NAME); if (key == "filterQuery") { String filterQuery = sfqc.getFilterQuery (); jRet = jEnv->NewStringUTF ((const char*)filterQuery.getCString ()); } else if (key == "queryLanguage") { String queryLanguage = sfqc.getQueryLanguage (); jRet = jEnv->NewStringUTF ((const char*)queryLanguage.getCString ()); } else if (key == "sourceNameSpace") { CIMNamespaceName cimNameSpaceName = sfqc.getSourceNameSpace (); String nameSpaceName = cimNameSpaceName.getString (); jRet = jEnv->NewStringUTF ((const char*)nameSpaceName.getCString ()); } } else if (container == "SnmpTrapOidContainer") { SnmpTrapOidContainer stoc = poc->get (SnmpTrapOidContainer::NAME); if (key == "snmpTrapOid") { String snmpTrapOid = stoc.getSnmpTrapOid (); jRet = jEnv->NewStringUTF ((const char*)snmpTrapOid.getCString ()); } } } Catch(jEnv); ///printf ("jRet: %08X\n", (int)jRet); jEnv->ReleaseStringUTFChars (jContainer, pszContainer); jEnv->ReleaseStringUTFChars (jKey, pszKey); return jRet; } } // extern "C" PEGASUS_NAMESPACE_END