+ // set byte order only if it differs from that currently set
+ if(info->data_endian != callback_cont->cur_endian) {
+ //prepare ByteOrder
+ cls = (*env)->FindClass(env, "java/nio/ByteOrder");
+ if (cls == 0) {
+ #ifdef TEST_STAGE
+ printf(":!c: cls = NULL \n");
+ #endif
+ }
+ if(info->data_endian == BigEndian) {
+ fid = (*env)->GetStaticFieldID(env,
+ cls,
+ "BIG_ENDIAN",
+ "Ljava/nio/ByteOrder;");
+ callback_cont->cur_endian = BigEndian;
+ }
+ else {
+ fid = (*env)->GetStaticFieldID(env,
+ cls,
+ "LITTLE_ENDIAN",
+ "Ljava/nio/ByteOrder;");
+ callback_cont->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, callback_cont->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,callback_cont->obj_buf,mid,obj_bo) == 0)
+ {
+ #ifdef TEST_STAGE
+ printf(":!c: set byte order failed.. \n");
+ #endif
+ }
+ }
+ //