[RocksJava] -WShadow improvements

Minor corrections to resolve -WShadow build problems with RocksJava code.
main
fyrz 10 years ago
parent e526b71402
commit c4bf07c245
  1. 2
      java/rocksjni/env.cc
  2. 6
      java/rocksjni/iterator.cc
  3. 157
      java/rocksjni/rocksjni.cc
  4. 38
      java/rocksjni/write_batch.cc

@ -15,7 +15,7 @@
* Signature: ()J * Signature: ()J
*/ */
jlong Java_org_rocksdb_RocksEnv_getDefaultEnvInternal( jlong Java_org_rocksdb_RocksEnv_getDefaultEnvInternal(
JNIEnv* env, jclass jclass) { JNIEnv* env, jclass jclazz) {
return reinterpret_cast<jlong>(rocksdb::Env::Default()); return reinterpret_cast<jlong>(rocksdb::Env::Default());
} }

@ -91,11 +91,11 @@ jbyteArray Java_org_rocksdb_RocksIterator_value0(
auto it = reinterpret_cast<rocksdb::Iterator*>(handle); auto it = reinterpret_cast<rocksdb::Iterator*>(handle);
rocksdb::Slice value_slice = it->value(); rocksdb::Slice value_slice = it->value();
jbyteArray jvalue = env->NewByteArray(value_slice.size()); jbyteArray jkeyValue = env->NewByteArray(value_slice.size());
env->SetByteArrayRegion( env->SetByteArrayRegion(
jvalue, 0, value_slice.size(), jkeyValue, 0, value_slice.size(),
reinterpret_cast<const jbyte*>(value_slice.data())); reinterpret_cast<const jbyte*>(value_slice.data()));
return jvalue; return jkeyValue;
} }
/* /*

@ -108,21 +108,21 @@ jobject
env->ReleaseStringUTFChars(jcfnames_for_free[i], cfnames_to_free[i]); env->ReleaseStringUTFChars(jcfnames_for_free[i], cfnames_to_free[i]);
} }
jobject jcfhandle_list = nullptr;
// check if open operation was successful // check if open operation was successful
if (s.ok()) { if (s.ok()) {
rocksdb::RocksDBJni::setHandle(env, jdb, db); rocksdb::RocksDBJni::setHandle(env, jdb, db);
jclass jclazz = env->FindClass("java/util/ArrayList"); jclass jListClazz = env->FindClass("java/util/ArrayList");
jmethodID mid = rocksdb::ListJni::getArrayListConstructorMethodId( jmethodID midList = rocksdb::ListJni::getArrayListConstructorMethodId(
env, jclazz); env, jListClazz);
jobject jcfhandle_list = env->NewObject(jclazz, mid, handles.size()); jobject jcfhandle_list = env->NewObject(jListClazz,
midList, handles.size());
// insert in java list // insert in java list
for (std::vector<rocksdb::ColumnFamilyHandle*>::size_type i = 0; for (std::vector<rocksdb::ColumnFamilyHandle*>::size_type i = 0;
i != handles.size(); i++) { i != handles.size(); i++) {
// jlong must be converted to Long due to collections restrictions // jlong must be converted to Long due to collections restrictions
jclass jclazz = env->FindClass("java/lang/Long"); jclass jLongClazz = env->FindClass("java/lang/Long");
jmethodID mid = env->GetMethodID(jclazz, "<init>", "(J)V"); jmethodID midLong = env->GetMethodID(jLongClazz, "<init>", "(J)V");
jobject obj = env->NewObject(jclazz, mid, jobject obj = env->NewObject(jLongClazz, midLong,
reinterpret_cast<jlong>(handles[i])); reinterpret_cast<jlong>(handles[i]));
env->CallBooleanMethod(jcfhandle_list, env->CallBooleanMethod(jcfhandle_list,
rocksdb::ListJni::getListAddMethodId(env), obj); rocksdb::ListJni::getListAddMethodId(env), obj);
@ -131,7 +131,7 @@ jobject
return jcfhandle_list; return jcfhandle_list;
} }
rocksdb::RocksDBExceptionJni::ThrowNew(env, s); rocksdb::RocksDBExceptionJni::ThrowNew(env, s);
return jcfhandle_list; return nullptr;
} }
/* /*
@ -180,21 +180,21 @@ jobject Java_org_rocksdb_RocksDB_open__JLjava_lang_String_2Ljava_util_List_2I(
env->ReleaseStringUTFChars(jcfnames_for_free[i], cfnames_to_free[i]); env->ReleaseStringUTFChars(jcfnames_for_free[i], cfnames_to_free[i]);
} }
jobject jcfhandle_list = nullptr;
// check if open operation was successful // check if open operation was successful
if (s.ok()) { if (s.ok()) {
rocksdb::RocksDBJni::setHandle(env, jdb, db); rocksdb::RocksDBJni::setHandle(env, jdb, db);
jclass jclazz = env->FindClass("java/util/ArrayList"); jclass jListClazz = env->FindClass("java/util/ArrayList");
jmethodID mid = rocksdb::ListJni::getArrayListConstructorMethodId( jmethodID midList = rocksdb::ListJni::getArrayListConstructorMethodId(
env, jclazz); env, jListClazz);
jobject jcfhandle_list = env->NewObject(jclazz, mid, handles.size()); jobject jcfhandle_list = env->NewObject(jListClazz,
midList, handles.size());
// insert in java list // insert in java list
for (std::vector<rocksdb::ColumnFamilyHandle*>::size_type i = 0; for (std::vector<rocksdb::ColumnFamilyHandle*>::size_type i = 0;
i != handles.size(); i++) { i != handles.size(); i++) {
// jlong must be converted to Long due to collections restrictions // jlong must be converted to Long due to collections restrictions
jclass jclazz = env->FindClass("java/lang/Long"); jclass jLongClazz = env->FindClass("java/lang/Long");
jmethodID mid = env->GetMethodID(jclazz, "<init>", "(J)V"); jmethodID midLong = env->GetMethodID(jLongClazz, "<init>", "(J)V");
jobject obj = env->NewObject(jclazz, mid, jobject obj = env->NewObject(jLongClazz, midLong,
reinterpret_cast<jlong>(handles[i])); reinterpret_cast<jlong>(handles[i]));
env->CallBooleanMethod(jcfhandle_list, env->CallBooleanMethod(jcfhandle_list,
rocksdb::ListJni::getListAddMethodId(env), obj); rocksdb::ListJni::getListAddMethodId(env), obj);
@ -203,7 +203,7 @@ jobject Java_org_rocksdb_RocksDB_open__JLjava_lang_String_2Ljava_util_List_2I(
return jcfhandle_list; return jcfhandle_list;
} }
rocksdb::RocksDBExceptionJni::ThrowNew(env, s); rocksdb::RocksDBExceptionJni::ThrowNew(env, s);
return jcfhandle_list; return nullptr;
} }
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
@ -226,18 +226,20 @@ jobject Java_org_rocksdb_RocksDB_listColumnFamilies(
env->ReleaseStringUTFChars(jdb_path, db_path); env->ReleaseStringUTFChars(jdb_path, db_path);
if (s.ok()) { if (s.ok()) {
// Don't reuse class pointer // Don't reuse class pointer
jclass jclazz = env->FindClass("java/util/ArrayList"); jclass jListClazz = env->FindClass("java/util/ArrayList");
jmethodID mid = rocksdb::ListJni::getArrayListConstructorMethodId(env, jmethodID mid = rocksdb::ListJni::getArrayListConstructorMethodId(env,
jclazz); jListClazz);
jvalue_list = env->NewObject(jclazz, mid, column_family_names.size()); jvalue_list = env->NewObject(jListClazz, mid, column_family_names.size());
for (std::vector<std::string>::size_type i = 0; for (std::vector<std::string>::size_type i = 0;
i < column_family_names.size(); i++) { i < column_family_names.size(); i++) {
jbyteArray jvalue = env->NewByteArray(column_family_names[i].size()); jbyteArray jcf_value =
env->SetByteArrayRegion(jvalue, 0, column_family_names[i].size(), env->NewByteArray(column_family_names[i].size());
env->SetByteArrayRegion(jcf_value, 0,
column_family_names[i].size(),
reinterpret_cast<const jbyte*>(column_family_names[i].c_str())); reinterpret_cast<const jbyte*>(column_family_names[i].c_str()));
env->CallBooleanMethod(jvalue_list, env->CallBooleanMethod(jvalue_list,
rocksdb::ListJni::getListAddMethodId(env), jvalue); rocksdb::ListJni::getListAddMethodId(env), jcf_value);
} }
} }
return jvalue_list; return jvalue_list;
@ -249,12 +251,13 @@ jobject Java_org_rocksdb_RocksDB_listColumnFamilies(
void rocksdb_put_helper( void rocksdb_put_helper(
JNIEnv* env, rocksdb::DB* db, const rocksdb::WriteOptions& write_options, JNIEnv* env, rocksdb::DB* db, const rocksdb::WriteOptions& write_options,
rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len, rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
jbyte* key = env->GetByteArrayElements(jkey, 0); jbyte* key = env->GetByteArrayElements(jkey, 0);
jbyte* value = env->GetByteArrayElements(jvalue, 0); jbyte* value = env->GetByteArrayElements(jentry_value, 0);
rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len); rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
rocksdb::Slice value_slice(reinterpret_cast<char*>(value), jvalue_len); rocksdb::Slice value_slice(reinterpret_cast<char*>(value),
jentry_value_len);
rocksdb::Status s; rocksdb::Status s;
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
@ -268,7 +271,7 @@ void rocksdb_put_helper(
// by passing JNI_ABORT, it will simply release the reference without // by passing JNI_ABORT, it will simply release the reference without
// copying the result back to the java byte array. // copying the result back to the java byte array.
env->ReleaseByteArrayElements(jkey, key, JNI_ABORT); env->ReleaseByteArrayElements(jkey, key, JNI_ABORT);
env->ReleaseByteArrayElements(jvalue, value, JNI_ABORT); env->ReleaseByteArrayElements(jentry_value, value, JNI_ABORT);
if (s.ok()) { if (s.ok()) {
return; return;
@ -284,14 +287,14 @@ void rocksdb_put_helper(
void Java_org_rocksdb_RocksDB_put__J_3BI_3BI( void Java_org_rocksdb_RocksDB_put__J_3BI_3BI(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
static const rocksdb::WriteOptions default_write_options = static const rocksdb::WriteOptions default_write_options =
rocksdb::WriteOptions(); rocksdb::WriteOptions();
rocksdb_put_helper(env, db, default_write_options, nullptr, rocksdb_put_helper(env, db, default_write_options, nullptr,
jkey, jkey_len, jkey, jkey_len,
jvalue, jvalue_len); jentry_value, jentry_value_len);
} }
/* /*
* Class: org_rocksdb_RocksDB * Class: org_rocksdb_RocksDB
@ -301,14 +304,14 @@ void Java_org_rocksdb_RocksDB_put__J_3BI_3BI(
void Java_org_rocksdb_RocksDB_put__J_3BI_3BIJ( void Java_org_rocksdb_RocksDB_put__J_3BI_3BIJ(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
static const rocksdb::WriteOptions default_write_options = static const rocksdb::WriteOptions default_write_options =
rocksdb::WriteOptions(); rocksdb::WriteOptions();
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
rocksdb_put_helper(env, db, default_write_options, cf_handle, rocksdb_put_helper(env, db, default_write_options, cf_handle,
jkey, jkey_len, jvalue, jvalue_len); jkey, jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -324,14 +327,14 @@ void Java_org_rocksdb_RocksDB_put__JJ_3BI_3BI(
JNIEnv* env, jobject jdb, JNIEnv* env, jobject jdb,
jlong jdb_handle, jlong jwrite_options_handle, jlong jdb_handle, jlong jwrite_options_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto write_options = reinterpret_cast<rocksdb::WriteOptions*>( auto write_options = reinterpret_cast<rocksdb::WriteOptions*>(
jwrite_options_handle); jwrite_options_handle);
rocksdb_put_helper(env, db, *write_options, nullptr, rocksdb_put_helper(env, db, *write_options, nullptr,
jkey, jkey_len, jkey, jkey_len,
jvalue, jvalue_len); jentry_value, jentry_value_len);
} }
/* /*
@ -343,14 +346,14 @@ void Java_org_rocksdb_RocksDB_put__JJ_3BI_3BIJ(
JNIEnv* env, jobject jdb, JNIEnv* env, jobject jdb,
jlong jdb_handle, jlong jwrite_options_handle, jlong jdb_handle, jlong jwrite_options_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto write_options = reinterpret_cast<rocksdb::WriteOptions*>( auto write_options = reinterpret_cast<rocksdb::WriteOptions*>(
jwrite_options_handle); jwrite_options_handle);
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
rocksdb_put_helper(env, db, *write_options, cf_handle, rocksdb_put_helper(env, db, *write_options, cf_handle,
jkey, jkey_len, jvalue, jvalue_len); jkey, jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -384,7 +387,7 @@ void Java_org_rocksdb_RocksDB_write(
jboolean key_may_exist_helper(JNIEnv* env, rocksdb::DB* db, jboolean key_may_exist_helper(JNIEnv* env, rocksdb::DB* db,
const rocksdb::ReadOptions& read_opt, const rocksdb::ReadOptions& read_opt,
rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len, rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len,
jobject jvalue) { jobject jstring_buffer) {
std::string value; std::string value;
bool value_found = false; bool value_found = false;
jboolean isCopy; jboolean isCopy;
@ -400,11 +403,11 @@ jboolean key_may_exist_helper(JNIEnv* env, rocksdb::DB* db,
} }
if (value_found && !value.empty()) { if (value_found && !value.empty()) {
jclass clazz = env->GetObjectClass(jvalue); jclass clazz = env->GetObjectClass(jstring_buffer);
jmethodID mid = env->GetMethodID(clazz, "append", jmethodID mid = env->GetMethodID(clazz, "append",
"(Ljava/lang/String;)Ljava/lang/StringBuffer;"); "(Ljava/lang/String;)Ljava/lang/StringBuffer;");
jstring new_value_str = env->NewStringUTF(value.c_str()); jstring new_value_str = env->NewStringUTF(value.c_str());
env->CallObjectMethod(jvalue, mid, new_value_str); env->CallObjectMethod(jstring_buffer, mid, new_value_str);
} }
env->ReleaseByteArrayElements(jkey, key, JNI_ABORT); env->ReleaseByteArrayElements(jkey, key, JNI_ABORT);
return static_cast<jboolean>(keyMayExist); return static_cast<jboolean>(keyMayExist);
@ -417,10 +420,10 @@ jboolean key_may_exist_helper(JNIEnv* env, rocksdb::DB* db,
*/ */
jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BILjava_lang_StringBuffer_2( jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BILjava_lang_StringBuffer_2(
JNIEnv* env, jobject jdb, jbyteArray jkey, jint jkey_len, JNIEnv* env, jobject jdb, jbyteArray jkey, jint jkey_len,
jobject jvalue) { jobject jstring_buffer) {
rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb); rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb);
return key_may_exist_helper(env, db, rocksdb::ReadOptions(), return key_may_exist_helper(env, db, rocksdb::ReadOptions(),
nullptr, jkey, jkey_len, jvalue); nullptr, jkey, jkey_len, jstring_buffer);
} }
/* /*
@ -430,13 +433,13 @@ jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BILjava_lang_StringBuffer_2(
*/ */
jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BIJLjava_lang_StringBuffer_2( jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BIJLjava_lang_StringBuffer_2(
JNIEnv* env, jobject jdb, jbyteArray jkey, jint jkey_len, JNIEnv* env, jobject jdb, jbyteArray jkey, jint jkey_len,
jlong jcf_handle, jobject jvalue) { jlong jcf_handle, jobject jstring_buffer) {
rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb); rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb);
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>( auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(
jcf_handle); jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
return key_may_exist_helper(env, db, rocksdb::ReadOptions(), return key_may_exist_helper(env, db, rocksdb::ReadOptions(),
cf_handle, jkey, jkey_len, jvalue); cf_handle, jkey, jkey_len, jstring_buffer);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -451,12 +454,12 @@ jboolean Java_org_rocksdb_RocksDB_keyMayExist___3BIJLjava_lang_StringBuffer_2(
*/ */
jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BILjava_lang_StringBuffer_2( jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BILjava_lang_StringBuffer_2(
JNIEnv* env, jobject jdb, jlong jread_options_handle, JNIEnv* env, jobject jdb, jlong jread_options_handle,
jbyteArray jkey, jint jkey_len, jobject jvalue) { jbyteArray jkey, jint jkey_len, jobject jstring_buffer) {
rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb); rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb);
auto& read_options = *reinterpret_cast<rocksdb::ReadOptions*>( auto& read_options = *reinterpret_cast<rocksdb::ReadOptions*>(
jread_options_handle); jread_options_handle);
return key_may_exist_helper(env, db, read_options, return key_may_exist_helper(env, db, read_options,
nullptr, jkey, jkey_len, jvalue); nullptr, jkey, jkey_len, jstring_buffer);
} }
/* /*
@ -466,7 +469,7 @@ jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BILjava_lang_StringBuffer_2(
*/ */
jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BIJLjava_lang_StringBuffer_2( jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BIJLjava_lang_StringBuffer_2(
JNIEnv* env, jobject jdb, jlong jread_options_handle, JNIEnv* env, jobject jdb, jlong jread_options_handle,
jbyteArray jkey, jint jkey_len, jlong jcf_handle, jobject jvalue) { jbyteArray jkey, jint jkey_len, jlong jcf_handle, jobject jstring_buffer) {
rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb); rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, jdb);
auto& read_options = *reinterpret_cast<rocksdb::ReadOptions*>( auto& read_options = *reinterpret_cast<rocksdb::ReadOptions*>(
jread_options_handle); jread_options_handle);
@ -474,7 +477,7 @@ jboolean Java_org_rocksdb_RocksDB_keyMayExist__J_3BIJLjava_lang_StringBuffer_2(
jcf_handle); jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
return key_may_exist_helper(env, db, read_options, cf_handle, return key_may_exist_helper(env, db, read_options, cf_handle,
jkey, jkey_len, jvalue); jkey, jkey_len, jstring_buffer);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -513,11 +516,11 @@ jbyteArray rocksdb_get_helper(
} }
if (s.ok()) { if (s.ok()) {
jbyteArray jvalue = env->NewByteArray(value.size()); jbyteArray jret_value = env->NewByteArray(value.size());
env->SetByteArrayRegion( env->SetByteArrayRegion(
jvalue, 0, value.size(), jret_value, 0, value.size(),
reinterpret_cast<const jbyte*>(value.c_str())); reinterpret_cast<const jbyte*>(value.c_str()));
return jvalue; return jret_value;
} }
rocksdb::RocksDBExceptionJni::ThrowNew(env, s); rocksdb::RocksDBExceptionJni::ThrowNew(env, s);
@ -598,7 +601,7 @@ jbyteArray Java_org_rocksdb_RocksDB_get__JJ_3BIJ(
jint rocksdb_get_helper( jint rocksdb_get_helper(
JNIEnv* env, rocksdb::DB* db, const rocksdb::ReadOptions& read_options, JNIEnv* env, rocksdb::DB* db, const rocksdb::ReadOptions& read_options,
rocksdb::ColumnFamilyHandle* column_family_handle, jbyteArray jkey, rocksdb::ColumnFamilyHandle* column_family_handle, jbyteArray jkey,
jint jkey_len, jbyteArray jvalue, jint jvalue_len) { jint jkey_len, jbyteArray jentry_value, jint jentry_value_len) {
static const int kNotFound = -1; static const int kNotFound = -1;
static const int kStatusError = -2; static const int kStatusError = -2;
@ -638,10 +641,10 @@ jint rocksdb_get_helper(
} }
int cvalue_len = static_cast<int>(cvalue.size()); int cvalue_len = static_cast<int>(cvalue.size());
int length = std::min(jvalue_len, cvalue_len); int length = std::min(jentry_value_len, cvalue_len);
env->SetByteArrayRegion( env->SetByteArrayRegion(
jvalue, 0, length, jentry_value, 0, length,
reinterpret_cast<const jbyte*>(cvalue.c_str())); reinterpret_cast<const jbyte*>(cvalue.c_str()));
return cvalue_len; return cvalue_len;
} }
@ -709,12 +712,13 @@ jobject multi_get_helper(JNIEnv* env, jobject jdb, rocksdb::DB* db,
// insert in java list // insert in java list
for (std::vector<rocksdb::Status>::size_type i = 0; i != s.size(); i++) { for (std::vector<rocksdb::Status>::size_type i = 0; i != s.size(); i++) {
if (s[i].ok()) { if (s[i].ok()) {
jbyteArray jvalue = env->NewByteArray(values[i].size()); jbyteArray jentry_value = env->NewByteArray(values[i].size());
env->SetByteArrayRegion( env->SetByteArrayRegion(
jvalue, 0, values[i].size(), jentry_value, 0, values[i].size(),
reinterpret_cast<const jbyte*>(values[i].c_str())); reinterpret_cast<const jbyte*>(values[i].c_str()));
env->CallBooleanMethod( env->CallBooleanMethod(
jvalue_list, rocksdb::ListJni::getListAddMethodId(env), jvalue); jvalue_list, rocksdb::ListJni::getListAddMethodId(env),
jentry_value);
} else { } else {
env->CallBooleanMethod( env->CallBooleanMethod(
jvalue_list, rocksdb::ListJni::getListAddMethodId(env), nullptr); jvalue_list, rocksdb::ListJni::getListAddMethodId(env), nullptr);
@ -789,11 +793,11 @@ jobject
jint Java_org_rocksdb_RocksDB_get__J_3BI_3BI( jint Java_org_rocksdb_RocksDB_get__J_3BI_3BI(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
return rocksdb_get_helper(env, return rocksdb_get_helper(env,
reinterpret_cast<rocksdb::DB*>(jdb_handle), reinterpret_cast<rocksdb::DB*>(jdb_handle),
rocksdb::ReadOptions(), nullptr, rocksdb::ReadOptions(), nullptr,
jkey, jkey_len, jvalue, jvalue_len); jkey, jkey_len, jentry_value, jentry_value_len);
} }
/* /*
@ -804,12 +808,12 @@ jint Java_org_rocksdb_RocksDB_get__J_3BI_3BI(
jint Java_org_rocksdb_RocksDB_get__J_3BI_3BIJ( jint Java_org_rocksdb_RocksDB_get__J_3BI_3BIJ(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db_handle = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db_handle = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
return rocksdb_get_helper(env, db_handle, rocksdb::ReadOptions(), cf_handle, return rocksdb_get_helper(env, db_handle, rocksdb::ReadOptions(), cf_handle,
jkey, jkey_len, jvalue, jvalue_len); jkey, jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -826,11 +830,11 @@ jint Java_org_rocksdb_RocksDB_get__J_3BI_3BIJ(
jint Java_org_rocksdb_RocksDB_get__JJ_3BI_3BI( jint Java_org_rocksdb_RocksDB_get__JJ_3BI_3BI(
JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle, JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
return rocksdb_get_helper(env, return rocksdb_get_helper(env,
reinterpret_cast<rocksdb::DB*>(jdb_handle), reinterpret_cast<rocksdb::DB*>(jdb_handle),
*reinterpret_cast<rocksdb::ReadOptions*>(jropt_handle), *reinterpret_cast<rocksdb::ReadOptions*>(jropt_handle),
nullptr, jkey, jkey_len, jvalue, jvalue_len); nullptr, jkey, jkey_len, jentry_value, jentry_value_len);
} }
/* /*
@ -841,13 +845,13 @@ jint Java_org_rocksdb_RocksDB_get__JJ_3BI_3BI(
jint Java_org_rocksdb_RocksDB_get__JJ_3BI_3BIJ( jint Java_org_rocksdb_RocksDB_get__JJ_3BI_3BIJ(
JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle, JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db_handle = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db_handle = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto& ro_opt = *reinterpret_cast<rocksdb::ReadOptions*>(jropt_handle); auto& ro_opt = *reinterpret_cast<rocksdb::ReadOptions*>(jropt_handle);
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
return rocksdb_get_helper(env, db_handle, ro_opt, cf_handle, jkey, return rocksdb_get_helper(env, db_handle, ro_opt, cf_handle, jkey,
jkey_len, jvalue, jvalue_len); jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -955,12 +959,13 @@ void Java_org_rocksdb_RocksDB_remove__JJ_3BIJ(
void rocksdb_merge_helper( void rocksdb_merge_helper(
JNIEnv* env, rocksdb::DB* db, const rocksdb::WriteOptions& write_options, JNIEnv* env, rocksdb::DB* db, const rocksdb::WriteOptions& write_options,
rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len, rocksdb::ColumnFamilyHandle* cf_handle, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
jbyte* key = env->GetByteArrayElements(jkey, 0); jbyte* key = env->GetByteArrayElements(jkey, 0);
jbyte* value = env->GetByteArrayElements(jvalue, 0); jbyte* value = env->GetByteArrayElements(jentry_value, 0);
rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len); rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
rocksdb::Slice value_slice(reinterpret_cast<char*>(value), jvalue_len); rocksdb::Slice value_slice(reinterpret_cast<char*>(value),
jentry_value_len);
rocksdb::Status s; rocksdb::Status s;
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
@ -973,7 +978,7 @@ void rocksdb_merge_helper(
// by passing JNI_ABORT, it will simply release the reference without // by passing JNI_ABORT, it will simply release the reference without
// copying the result back to the java byte array. // copying the result back to the java byte array.
env->ReleaseByteArrayElements(jkey, key, JNI_ABORT); env->ReleaseByteArrayElements(jkey, key, JNI_ABORT);
env->ReleaseByteArrayElements(jvalue, value, JNI_ABORT); env->ReleaseByteArrayElements(jentry_value, value, JNI_ABORT);
if (s.ok()) { if (s.ok()) {
return; return;
@ -989,13 +994,13 @@ void rocksdb_merge_helper(
void Java_org_rocksdb_RocksDB_merge__J_3BI_3BI( void Java_org_rocksdb_RocksDB_merge__J_3BI_3BI(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
static const rocksdb::WriteOptions default_write_options = static const rocksdb::WriteOptions default_write_options =
rocksdb::WriteOptions(); rocksdb::WriteOptions();
rocksdb_merge_helper(env, db, default_write_options, rocksdb_merge_helper(env, db, default_write_options,
nullptr, jkey, jkey_len, jvalue, jvalue_len); nullptr, jkey, jkey_len, jentry_value, jentry_value_len);
} }
/* /*
@ -1006,14 +1011,14 @@ void Java_org_rocksdb_RocksDB_merge__J_3BI_3BI(
void Java_org_rocksdb_RocksDB_merge__J_3BI_3BIJ( void Java_org_rocksdb_RocksDB_merge__J_3BI_3BIJ(
JNIEnv* env, jobject jdb, jlong jdb_handle, JNIEnv* env, jobject jdb, jlong jdb_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
static const rocksdb::WriteOptions default_write_options = static const rocksdb::WriteOptions default_write_options =
rocksdb::WriteOptions(); rocksdb::WriteOptions();
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
rocksdb_merge_helper(env, db, default_write_options, rocksdb_merge_helper(env, db, default_write_options,
cf_handle, jkey, jkey_len, jvalue, jvalue_len); cf_handle, jkey, jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));
@ -1029,13 +1034,13 @@ void Java_org_rocksdb_RocksDB_merge__JJ_3BI_3BI(
JNIEnv* env, jobject jdb, JNIEnv* env, jobject jdb,
jlong jdb_handle, jlong jwrite_options_handle, jlong jdb_handle, jlong jwrite_options_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto write_options = reinterpret_cast<rocksdb::WriteOptions*>( auto write_options = reinterpret_cast<rocksdb::WriteOptions*>(
jwrite_options_handle); jwrite_options_handle);
rocksdb_merge_helper(env, db, *write_options, rocksdb_merge_helper(env, db, *write_options,
nullptr, jkey, jkey_len, jvalue, jvalue_len); nullptr, jkey, jkey_len, jentry_value, jentry_value_len);
} }
/* /*
@ -1047,14 +1052,14 @@ void Java_org_rocksdb_RocksDB_merge__JJ_3BI_3BIJ(
JNIEnv* env, jobject jdb, JNIEnv* env, jobject jdb,
jlong jdb_handle, jlong jwrite_options_handle, jlong jdb_handle, jlong jwrite_options_handle,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle); auto db = reinterpret_cast<rocksdb::DB*>(jdb_handle);
auto write_options = reinterpret_cast<rocksdb::WriteOptions*>( auto write_options = reinterpret_cast<rocksdb::WriteOptions*>(
jwrite_options_handle); jwrite_options_handle);
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
rocksdb_merge_helper(env, db, *write_options, rocksdb_merge_helper(env, db, *write_options,
cf_handle, jkey, jkey_len, jvalue, jvalue_len); cf_handle, jkey, jkey_len, jentry_value, jentry_value_len);
} else { } else {
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::RocksDBExceptionJni::ThrowNew(env,
rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle.")); rocksdb::Status::InvalidArgument("Invalid ColumnFamilyHandle."));

@ -65,15 +65,16 @@ void Java_org_rocksdb_WriteBatch_clear(JNIEnv* env, jobject jobj) {
void write_batch_put_helper( void write_batch_put_helper(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jbyteArray jentry_value, jint jentry_value_len,
rocksdb::ColumnFamilyHandle* cf_handle) { rocksdb::ColumnFamilyHandle* cf_handle) {
rocksdb::WriteBatch* wb = rocksdb::WriteBatchJni::getHandle(env, jobj); rocksdb::WriteBatch* wb = rocksdb::WriteBatchJni::getHandle(env, jobj);
assert(wb != nullptr); assert(wb != nullptr);
jbyte* key = env->GetByteArrayElements(jkey, nullptr); jbyte* key = env->GetByteArrayElements(jkey, nullptr);
jbyte* value = env->GetByteArrayElements(jvalue, nullptr); jbyte* value = env->GetByteArrayElements(jentry_value, nullptr);
rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len); rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
rocksdb::Slice value_slice(reinterpret_cast<char*>(value), jvalue_len); rocksdb::Slice value_slice(reinterpret_cast<char*>(value),
jentry_value_len);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
wb->Put(cf_handle, key_slice, value_slice); wb->Put(cf_handle, key_slice, value_slice);
} else { } else {
@ -81,7 +82,7 @@ void write_batch_put_helper(
wb->Put(key_slice, value_slice); wb->Put(key_slice, value_slice);
} }
env->ReleaseByteArrayElements(jkey, key, JNI_ABORT); env->ReleaseByteArrayElements(jkey, key, JNI_ABORT);
env->ReleaseByteArrayElements(jvalue, value, JNI_ABORT); env->ReleaseByteArrayElements(jentry_value, value, JNI_ABORT);
} }
/* /*
@ -92,9 +93,9 @@ void write_batch_put_helper(
void Java_org_rocksdb_WriteBatch_put___3BI_3BI( void Java_org_rocksdb_WriteBatch_put___3BI_3BI(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
write_batch_put_helper(env, jobj, jkey, jkey_len, jvalue, write_batch_put_helper(env, jobj, jkey, jkey_len, jentry_value,
jvalue_len, nullptr); jentry_value_len, nullptr);
} }
/* /*
@ -105,10 +106,10 @@ void Java_org_rocksdb_WriteBatch_put___3BI_3BI(
void Java_org_rocksdb_WriteBatch_put___3BI_3BIJ( void Java_org_rocksdb_WriteBatch_put___3BI_3BIJ(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
write_batch_put_helper(env, jobj, jkey, jkey_len, jvalue, write_batch_put_helper(env, jobj, jkey, jkey_len, jentry_value,
jvalue_len, cf_handle); jentry_value_len, cf_handle);
} }
/* /*
@ -117,15 +118,16 @@ void Java_org_rocksdb_WriteBatch_put___3BI_3BIJ(
void write_batch_merge_helper( void write_batch_merge_helper(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jbyteArray jentry_value, jint jentry_value_len,
rocksdb::ColumnFamilyHandle* cf_handle) { rocksdb::ColumnFamilyHandle* cf_handle) {
rocksdb::WriteBatch* wb = rocksdb::WriteBatchJni::getHandle(env, jobj); rocksdb::WriteBatch* wb = rocksdb::WriteBatchJni::getHandle(env, jobj);
assert(wb != nullptr); assert(wb != nullptr);
jbyte* key = env->GetByteArrayElements(jkey, nullptr); jbyte* key = env->GetByteArrayElements(jkey, nullptr);
jbyte* value = env->GetByteArrayElements(jvalue, nullptr); jbyte* value = env->GetByteArrayElements(jentry_value, nullptr);
rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len); rocksdb::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
rocksdb::Slice value_slice(reinterpret_cast<char*>(value), jvalue_len); rocksdb::Slice value_slice(reinterpret_cast<char*>(value),
jentry_value_len);
if (cf_handle != nullptr) { if (cf_handle != nullptr) {
wb->Merge(cf_handle, key_slice, value_slice); wb->Merge(cf_handle, key_slice, value_slice);
} else { } else {
@ -133,7 +135,7 @@ void write_batch_merge_helper(
wb->Merge(key_slice, value_slice); wb->Merge(key_slice, value_slice);
} }
env->ReleaseByteArrayElements(jkey, key, JNI_ABORT); env->ReleaseByteArrayElements(jkey, key, JNI_ABORT);
env->ReleaseByteArrayElements(jvalue, value, JNI_ABORT); env->ReleaseByteArrayElements(jentry_value, value, JNI_ABORT);
} }
/* /*
@ -144,9 +146,9 @@ void write_batch_merge_helper(
void Java_org_rocksdb_WriteBatch_merge___3BI_3BI( void Java_org_rocksdb_WriteBatch_merge___3BI_3BI(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len) { jbyteArray jentry_value, jint jentry_value_len) {
write_batch_merge_helper(env, jobj, jkey, jkey_len, write_batch_merge_helper(env, jobj, jkey, jkey_len,
jvalue, jvalue_len, nullptr); jentry_value, jentry_value_len, nullptr);
} }
/* /*
@ -157,10 +159,10 @@ void Java_org_rocksdb_WriteBatch_merge___3BI_3BI(
void Java_org_rocksdb_WriteBatch_merge___3BI_3BIJ( void Java_org_rocksdb_WriteBatch_merge___3BI_3BIJ(
JNIEnv* env, jobject jobj, JNIEnv* env, jobject jobj,
jbyteArray jkey, jint jkey_len, jbyteArray jkey, jint jkey_len,
jbyteArray jvalue, jint jvalue_len, jlong jcf_handle) { jbyteArray jentry_value, jint jentry_value_len, jlong jcf_handle) {
auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle); auto cf_handle = reinterpret_cast<rocksdb::ColumnFamilyHandle*>(jcf_handle);
write_batch_merge_helper(env, jobj, jkey, jkey_len, write_batch_merge_helper(env, jobj, jkey, jkey_len,
jvalue, jvalue_len, cf_handle); jentry_value, jentry_value_len, cf_handle);
} }
/* /*

Loading…
Cancel
Save