Example #1
0
JNIEXPORT void JNICALL Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_processDataClass1_a
  (JNIEnv *env, jobject obj, jobject dataClass1Obj) {

  printf("### Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_processDataClass1\n"); 
  
  JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass1", dataClass1Obj);

  jboolean boolValue =  javaObjectDataClass.getBooleanField("booleanValue");
  javaObjectDataClass.setBooleanField("booleanValue",true);
  
  jint intValue =  javaObjectDataClass.getIntField("intValue");
  javaObjectDataClass.setIntField("intValue",intValue*2);

  JavaStringIn str(env,javaObjectDataClass.getStringField("stringValue"));
  std::ostringstream os;
  os << str.getString() << "-jni" << "\0";
  javaObjectDataClass.setStringField("stringValue", os.str());
  
  jfloat f = javaObjectDataClass.getFloatField("floatValue");
  javaObjectDataClass.setFloatField("floatValue",f * 3);  
  
  jdouble d = javaObjectDataClass.getDoubleField("doubleValue");
  javaObjectDataClass.setDoubleField("doubleValue",d/2);   

  JByteArrayPtrIn byteArray(env, javaObjectDataClass.getBytesField("byteArrayValue"));
  if (byteArray.getNumberOfBytes()>0) 
  {
    int nrOfBytes = byteArray.getNumberOfBytes()*2;
    jbyte buf[nrOfBytes];
    javaObjectDataClass.setBytesField("byteArrayValue", buf, nrOfBytes);
  }
}
Example #2
0
 /*
 * Class:     org_mahu_proto_jnitest_nativewrapper_HelloJNI
 * Method:    processDataClass
 * Signature: (Lorg/mahu/proto/jnitest/nativewrapper/DataClass;)V
 */
JNIEXPORT void JNICALL Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_processDataClass
  (JNIEnv *env, jobject obj, jobject dataClassObj) {
  
  printf("### Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_processDataClass\n");   

  JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass", dataClassObj);  
 
  jboolean boolValue =  javaObjectDataClass.getBoolean("getBooleanValue");
  javaObjectDataClass.setBoolean("setBooleanValue",true);
 
  jint val = javaObjectDataClass.getInt("getIntValue"); 
  if (boolValue) {
		printf("Method getIntValue() return: %i\n", val);
  }
  javaObjectDataClass.setInt("setIntValue",val*2);
  
  JavaStringIn str(env,javaObjectDataClass.getString("getStringValue"));
  std::ostringstream os;
  os << str.getString() << "-jni" << "\0";
  javaObjectDataClass.setString("setStringValue", os.str());
  
  jfloat f = javaObjectDataClass.getFloat("getFloatValue");
  javaObjectDataClass.setFloat("setFloatValue",f * 3);
  
  jdouble d = javaObjectDataClass.getDouble("getDoubleValue");
  javaObjectDataClass.setDouble("setDoubleValue",d/2);  
  
  JByteArrayPtrIn byteArray(env, javaObjectDataClass.getBytes("getByteArrayValue"));
  if (byteArray.getNumberOfBytes()>0) 
  {
    int nrOfBytes = byteArray.getNumberOfBytes()*2;
    jbyte buf[nrOfBytes];
    javaObjectDataClass.setBytes("setByteArrayValue", buf, nrOfBytes);
  }
}
Example #3
0
/*
 * Class:     org_mahu_proto_jnitest_nativewrapper_HelloJNI
 * Method:    testSpecial
 * Signature: (I)I
 */
jint Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_testSpecial_helper
  (JNIEnv *env, jobject obj, jint test) 
{
  std::cout << "###  Java_org_mahu_proto_jnitest_nativewrapper_HelloJNI_testSpecial, test " << test << std::endl;

  switch(test) {
  case 0: // call method on object that returns a string. 
    {
	  JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass");
	  jobject stringObj = javaObjectDataClass.getObject("getStringValue","()Ljava/lang/String;"); 
	  JavaObject stringJavaObj(env, "java/lang/String",stringObj);
	  jint length = stringJavaObj.getInt("length");
	  std::cout << "Length of string is: " << length << std::endl;
      return 0;
    }
  case 1: // call field on object that returns a string. 
    {
	  JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass1");
	  jobject stringObj = javaObjectDataClass.getObjectField("stringValue","Ljava/lang/String;"); 
	  JavaObject stringJavaObj(env, "java/lang/String",stringObj);
	  jint length = stringJavaObj.getInt("length");
	  std::cout << "Length of string is: " << length << std::endl;
      return 0;
    }	
	case 2:
	{
	  MyClass myClass(env, *myGlobalClass, obj);
	  int value = myClass.test.get()+10;
	  myClass.test.set(value);
	  return myClass.test.get();
	}
	case 3: // JNI_SPECIAL_CASE_MYCLASS_GET_METHOD_INT
	{
	  MyClass myClass(env, *myGlobalClass, obj);
	  int value = myClass.intMethod.get()+10;
	  myClass.intMethod.set(value);
	  return myClass.intMethod.get();
	}	
	case 4: // JNI_SPECIAL_CASE_GET_SIZEOF_VOID_POINTER
	{
	  return sizeof(void *);
	}	
	case 5: // JNI_SPECIAL_CASE_GET_SIZEOF_JLONG
	{
	  return sizeof(jlong);
	}		
	case 6: // JNI_SPECIAL_CASE_LOAD_CLASS
	{
      JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass2");
	  jint intValue =  javaObjectDataClass.getIntField("intValue");
	  return intValue;
	}	
	case 7: // SEGV
	{
	  // baz();
	  return 1;
	}
	case 8: // JNI_SPECIAL_CASE_PRINT_OBJECTREF
	{
       std::cout << "HelloJNI objRef " << std::hex << std::showbase << obj << std::dec << std::endl;
	   for(int i=0; i<100; i++) {
         JavaObject javaObjectDataClass(env,"org/mahu/proto/jnitest/nativewrapper/DataClass2");	   
		 std::cout << "DataClass2 objRef " << std::hex << std::showbase 
				<< javaObjectDataClass.getJObject() << std::dec << std::endl;
	   }
	   break;
	}	
	case 9: // JNI_SPECIAL_CASE_BIG_ARRAY_READ
	{
		JavaObject javaObject(env, "org/mahu/proto/jnitest/nativewrapper/HelloJNI", obj);
		JByteArrayPtrIn byteArray(env, javaObject.getBytesField("specialBytes"));	
	    return 1;
	}
	default:
	  break;
  }
  return 1;
}