📄 jmpiimpl.cpp
字号:
}JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop, jNs); cCc->deleteInstance (cop->getNameSpace (), *cop); } Catch (jEnv);}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCi){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, CIMInstance*, jCi); try { checkNs (cop, jNs); ci->setPath (*cop); CIMObjectPath obj = cCc->createInstance (cop->getNameSpace (), *ci); return DEBUG_ConvertCToJava (CIMObjectPath*, jlong, new CIMObjectPath (obj)); } Catch (jEnv); return 0;}JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jCi, jboolean iq, jobjectArray jPl){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMInstance *ci = DEBUG_ConvertJavaToC (jlong, 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 jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop, jNs); Array<CIMClass> enm = cCc->enumerateClasses (cop->getNameSpace (), cop->getClassName (), (Boolean)deep, (Boolean)lo, (Boolean)iq, (Boolean)ic); return DEBUG_ConvertCToJava (Array<CIMClass>*, jlong, new Array<CIMClass> (enm)); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMNamespaceName ns = cop->getNameSpace (); try { checkNs (cop, jNs); Array<CIMName> enm = cCc->enumerateClassNames (ns, cop->getClassName (), (Boolean)deep); Array<CIMObjectPath> *enmop = new Array<CIMObjectPath> (); for (int i = 0, m = enm.size (); i < m; i++) { enmop->append (CIMObjectPath (String::EMPTY, ns, enm[i])); } return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, enmop); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop,jNs); Array<CIMObjectPath> enm = cCc->enumerateInstanceNames (cop->getNameSpace (), cop->getClassName ()); //, (Boolean)deep); return DEBUG_ConvertCToJava (Array<CIMObjectPath>*, jlong, new Array<CIMObjectPath> (enm)); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMPropertyList pl = getList (jEnv,jPl); try { checkNs (cop, jNs); CIMPropertyList props; Array<CIMInstance> enm = cCc->enumerateInstances (cop->getNameSpace (), cop->getClassName (), (Boolean)deep, (Boolean)lo, (Boolean)iq, (Boolean)ic,pl); return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, new Array<CIMInstance> (enm)); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop, jNs); Array<CIMQualifierDecl> enm = cCc->enumerateQualifiers (cop->getNameSpace ()); return DEBUG_ConvertCToJava (Array<CIMQualifierDecl>*, jlong, new Array<CIMQualifierDecl> (enm)); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop,jNs); CIMQualifierDecl *val = new CIMQualifierDecl (cCc->getQualifier (cop->getNameSpace (), cop->getClassName ())); return DEBUG_ConvertCToJava (CIMQualifierDecl*, jlong, val); } Catch (jEnv); return 0;}JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jlong jQ){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMQualifierDecl *qt = DEBUG_ConvertJavaToC (jlong, CIMQualifierDecl*, jQ); try { checkNs (cop, jNs); cCc->setQualifier (cop->getNameSpace (), *qt); } Catch (jEnv);}JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); try { checkNs (cop, jNs); cCc->deleteQualifier (cop->getNameSpace (), cop->getClassName ()); } Catch (jEnv);}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jPn){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars (jPn, NULL); CIMName pName (str); jlong jCv = 0; try { checkNs (cop, jNs); CIMValue *val = new CIMValue (cCc->getProperty (cop->getNameSpace (), *cop, pName)); jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val); } Catch (jEnv); jEnv->ReleaseStringUTFChars (jPn, str); return jCv;}JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jPn, jlong jV){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); CIMValue *val = DEBUG_ConvertJavaToC (jlong, 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 jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jQuery, jstring jQl){ CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, 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 = "<<PEGASUS_STD (hex)<< (long)jEnv<<", jThs = "<< (long)jThs<<PEGASUS_STD (dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD (hex)<< (long)jQuery<<", jQl = "<< (long)jQl<<PEGASUS_STD (dec)<<PEGASUS_STD (endl));** What does work is:** printf ("This is a test\n");**** To debug these JNI functions insert the following:** if (getenv ("PEGASUS_JMPI_GDB"))** {** bool fLoop = true;** int i = 0;**** while (fLoop)** {** i = 1;** }** }** Export the variable PEGASUS_JMPI_GDB = 1.** Start gdb in another process.** shell ps -efl** att <ps number>** set fLoop = 0*/ jEnv->ReleaseStringUTFChars (jQuery, str); str = jEnv->GetStringUTFChars (jQl, NULL); String ql (str); jEnv->ReleaseStringUTFChars (jQl, str); try { checkNs (cop, jNs); Array<CIMObject> enm = cCc->execQuery (cop->getNameSpace (), ql, query); Array<CIMInstance> *enmInst = new Array<CIMInstance> (); for (int i = 0,m = enm.size (); i<m; i++) { enmInst->append (CIMInstance (enm[i])); } return DEBUG_ConvertCToJava (Array<CIMInstance>*, jlong, enmInst); } Catch (jEnv); return 0;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jMn, jobject jIn, jobject jOut){ JMPIjvm::cacheIDs (jEnv); CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars (jMn, NULL); CIMName method (str); jlong jCv = 0; Array<CIMParamValue> in; Array<CIMParamValue> 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); jlong jp = jEnv->CallLongMethod (jProp,JMPIjvm::jv.CIMPropertyCInst); CIMProperty *p = DEBUG_ConvertJavaToC (jlong, 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 (); i<m; i++) { const CIMParamValue &parm = out[i]; const CIMValue v = parm.getValue (); CIMProperty *p = new CIMProperty (parm.getParameterName (),v,v.getArraySize ()); jlong jp = DEBUG_ConvertCToJava (CIMProperty*, jlong, p); jobject prop = jEnv->NewObject (JMPIjvm::jv.CIMPropertyClassRef,JMPIjvm::jv.CIMPropertyNewJ,jp); jEnv->CallVoidMethod (jOut,JMPIjvm::jv.VectorAddElement,prop); } jCv = DEBUG_ConvertCToJava (CIMValue*, jlong, val); } Catch (jEnv); jEnv->ReleaseStringUTFChars (jMn,str); return jCv;}JNIEXPORT jlong JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24 (JNIEnv *jEnv, jobject jThs, jlong jCc, jlong jNs, jlong jCop, jstring jMn, jobjectArray jIn, jobjectArray jOut){ JMPIjvm::cacheIDs (jEnv); CIMClient *cCc = DEBUG_ConvertJavaToC (jlong, CIMClient*, jCc); CIMObjectPath *cop = DEBUG_ConvertJavaToC (jlong, CIMObjectPath*, jCop); const char *str = jEnv->GetStringUTFChars (jMn, NULL); CIMName method (str); jlong jCv = 0; Array<CIMParamValue> in; Array<CIMParamValue> out; if (jIn) { for (int i = 0, m = jEnv->GetArrayLength (jIn); i < m; i++) { JMPIjvm::checkException (jEnv); jobject jArg = jEnv->GetObjectArrayElement (jIn, i); JMPIjvm::checkException (jEnv); jlong jp = jEnv->CallLongMethod (jArg,JMPIjvm::jv.CIMArgumentCInst);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -