jobject convert(JNIEnv* env, const TaskStatus& status) { string data; status.SerializeToString(&data); // byte[] data = ..; jbyteArray jdata = env->NewByteArray(data.size()); env->SetByteArrayRegion(jdata, 0, data.size(), (jbyte*) data.data()); // TaskStatus status = TaskStatus.parseFrom(data); jclass clazz = FindMesosClass(env, "org/apache/mesos/Protos$TaskStatus"); jmethodID parseFrom = env->GetStaticMethodID(clazz, "parseFrom", "([B)Lorg/apache/mesos/Protos$TaskStatus;"); jobject jstatus = env->CallStaticObjectMethod(clazz, parseFrom, jdata); return jstatus; }