*
*/
+#include <stdlib.h>
// origin orte headers
#include "orte.h"
// pregenerated header
#include "jorte/org_ocera_orte_DomainApp.h"
#include "jorte/4all.h"
+#include "jorte/jorte_typedefs_defines.h"
JNIEXPORT jboolean JNICALL
Java_org_ocera_orte_DomainApp_jORTEDomainAppDestroy
-(JNIEnv *env, jclass cls, jlong dhandle)
+ (JNIEnv *env, jobject obj, jlong dhandle)
{
- // check domain handle
- if (dhandle == 0)
- {
- printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
+ jlong h;
+ jclass cls;
+ jfieldID fid;
+ int flag_ok = 0;
+
+ do {
+ // check domain handle
+ if (dhandle == 0) {
+ printf(":!c: ORTEDomainAppDestroy failed! [bad handle] \n");
+ break;
+ }
+ // call ORTE function
+ if (!ORTEDomainAppDestroy((ORTEDomain *)dhandle)) {
+ #ifdef TEST_STAGE
+ printf(":c: ORTEDomainAppDestroy failed.. \n");
+ #endif
+ break;
+ }
+
+ // free domainEvents object
+ // find cls
+ cls = (*env)->GetObjectClass(env, obj);
+ if (cls == 0) {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL! \n");
+ #endif
+ break;
+ }
+ // fieldID
+ fid = (*env)->GetFieldID(env,
+ cls,
+ "domainEventsContextHandle",
+ "J");
+ if (fid == 0) {
+ #ifdef TEST_STAGE
+ printf(":!c: fid = NULL! \n");
+ #endif
+ break;
+ }
+ // get value
+ h = (*env)->GetLongField(env, obj, fid);
+ if (h) {
+ JORTEDomainEventsContext_t *ctx = (JORTEDomainEventsContext_t *)h;
+ if (ctx->obj_de) {
+ #ifdef TEST_STAGE
+ printf(":c: deleting ctx->obj_de \n");
+ #endif
+ (*env)->DeleteGlobalRef(env, ctx->obj_de);
+ }
+ //
+ free((void *)h);
+ }
+ flag_ok = 1;
+ } while (0);
+
+ if (flag_ok == 0) {
+ printf(":!c: ORTEDomainAppDestroy failed! \n");
return 0;
}
- // call ORTE function
- if (ORTEDomainAppDestroy((ORTEDomain *) dhandle))
- {
- #ifdef TEST_STAGE
- printf(":c: ORTEDomainAppDestroy successfull.. \n");
- #endif
- return 1;
- }
- printf(":!c: ORTEDomainAppDestroy failed! \n");
- return 0;
+
+ return 1;
}