]> rtime.felk.cvut.cz Git - orte.git/blobdiff - orte/libjorte/JORTETypeRegisterAdd.c
Merge branch 'master' of https://github.com/Vajnar/orte
[orte.git] / orte / libjorte / JORTETypeRegisterAdd.c
index d3d2dca7c024b3b68bc9dd1b83cf84d3e372db3f..bbcb96c6bd9507d49c0a1b5ef40c830f9a5fdcf5 100644 (file)
   *
   */
 
-#include <stdlib.h>
-#include <jni.h>
+
 // library header file's path
-#include "orte_all.h"
+#include "orte.h"
 // pregenerated header
 #include "jorte/org_ocera_orte_DomainApp.h"
-
-#include "jorte/jorte_typedefs_defines.h"
 #include "jorte/4all.h"
 
-void set_order(CDR_Codec *cdrCodec, void *param) {
-  JNIEnv        *env = 0;
-  jclass         cls = 0;
-  jfieldID       fid = 0;
-  jmethodID      mid = 0;
-  jobject        obj_bo = 0;
-  
-  JORTESetEndiannessContext_t *ctx = (JORTESetEndiannessContext_t*) param;
-
-  //set byte order only once
-  if(cdrCodec->data_endian != ctx->cur_endian) {
-    // get environment
-    (*ctx->jvm)->AttachCurrentThread(ctx->jvm, (void **)&env, NULL);
-    if(env == 0)
-    {
-      #ifdef TEST_STAGE
-       printf(":!c: env = NULL \n");
-      #endif
-    }
-
-    //prepare ByteOrder
-    cls = (*env)->FindClass(env, "java/nio/ByteOrder");
-    if (cls == 0) {
-      #ifdef TEST_STAGE
-        printf(":!c: cls = NULL \n");
-      #endif
-    }
-    if(cdrCodec->data_endian == BigEndian) {
-      fid = (*env)->GetStaticFieldID(env,
-                                        cls,
-                                        "BIG_ENDIAN",
-                                        "Ljava/nio/ByteOrder;");
-      ctx->cur_endian = BigEndian;
-    }
-    else {
-      fid = (*env)->GetStaticFieldID(env,
-                                        cls,
-                                        "LITTLE_ENDIAN",
-                                        "Ljava/nio/ByteOrder;");
-      ctx->cur_endian = LittleEndian;
-    }
-    if(fid == 0) {
-      #ifdef TEST_STAGE
-           printf(":!c: fid = NULL \n");
-         #endif
-    }
-    obj_bo = (*env)->GetStaticObjectField(env, cls, fid);
-    if(obj_bo == 0) {
-      #ifdef TEST_STAGE
-           printf(":!c: cls = NULL \n");
-         #endif
-    }
-
-    // set byte order to ByteBuffer
-    // get BB class
-    cls = (*env)->GetObjectClass(env, ctx->obj_buf);
-    if(cls == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: cls = NULL \n");
-      #endif
-    }
-    // get methodID - order(ByteOrder)
-    mid = (*env)->GetMethodID(env,
-                             cls,
-                             "order",
-                             "(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;");
-    if(mid == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: mid = NULL \n");
-      #endif
-    }
-
-    // set ByteOrder
-    if((*env)->CallObjectMethod(env,ctx->obj_buf,mid,obj_bo) == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: set byte order failed.. \n");
-      #endif
-    }
-
-    (*ctx->jvm)->DetachCurrentThread(ctx->jvm);
-  }
-}
-
 JNIEXPORT jint JNICALL
 Java_org_ocera_orte_DomainApp_jORTETypeRegisterAdd
-(JNIEnv *env, jclass cls, jlong handle, jstring jname, jlong jlength, jobject obj_bb)
+  (JNIEnv *env, jclass cls, jlong handle, jstring jname, jlong jlength)
 {
   const char     *name;
   int            b;
 
-  JORTESetEndiannessContext_t *ctx = 0;
-  
-  jobject        byte_buf = 0;
-  JavaVM         *jvm = 0;
-
-  // TODO free() !
-  ctx = (JORTESetEndiannessContext_t*) malloc(sizeof(JORTESetEndiannessContext_t));
-  if(ctx == 0) {
-    #ifdef TEST_STAGE
-      printf(":c!: ctx = NULL\n");
-    #endif
-  }
-  // create global reference for ByteBuffer
-  // TODO delete global reference
-  byte_buf = (*env)->NewGlobalRef(env, obj_bb);
-  ctx->obj_buf = byte_buf;
-  // get jvm
-  b = (*env)->GetJavaVM(env,&jvm);
-  if (b < 0)
-  {
-    printf(":!c: getJavaVM() failed! \n");
-    return 0;
-  }
-  ctx->jvm = jvm;
-  ctx->cur_endian = FLAG_ENDIANNESS;
-
   // get type name from JAVA env
-  name = (*env)->GetStringUTFChars(env,jname,0);
+  name = (*env)->GetStringUTFChars(env, jname, 0);
   // call ORTE function
-  b = ORTETypeRegisterAdd((ORTEDomain *) handle,
-                          name,
-                          NULL,
-                          NULL,
-                          NULL,
-                          (unsigned int) jlength,
-                          (ORTETypeProcessEndianness) set_order,
-                          (void*) ctx);
+  b = ORTETypeRegisterAdd((ORTEDomain *)handle,
+                         name,
+                         NULL,
+                         NULL,
+                         NULL,
+                         (unsigned int)jlength);
   // free memmory space
-  (*env)->ReleaseStringUTFChars(env,jname,name);
-
+  (*env)->ReleaseStringUTFChars(env, jname, name);
   #ifdef TEST_STAGE
   printf(":c: jORTETypeRegisterAdd vraci %d [%d = ORTE_OK, %d = ORTE_BAD_HANDLE] \n",
-         b,ORTE_OK,ORTE_BAD_HANDLE);
+        b, ORTE_OK, ORTE_BAD_HANDLE);
   #endif
   return b;