Merge "v.io/x/jni: remove Wrap* functions now that we cast to uintptr at the caller."
diff --git a/util/jni_wrapper.c b/util/jni_wrapper.c
index 01bd769..ffdb0f7 100644
--- a/util/jni_wrapper.c
+++ b/util/jni_wrapper.c
@@ -82,6 +82,10 @@
return (*env)->GetIntField(env, obj, fieldID);
}
+jlong GetLongField(JNIEnv* env, jobject obj, jfieldID fieldID) {
+ return (*env)->GetLongField(env, obj, fieldID);
+}
+
jobject GetStaticObjectField(JNIEnv* env, jclass cls, jfieldID fieldID) {
return (*env)->GetStaticObjectField(env, cls, fieldID);
}
diff --git a/util/jni_wrapper.h b/util/jni_wrapper.h
index 29dd528..7093b1c 100644
--- a/util/jni_wrapper.h
+++ b/util/jni_wrapper.h
@@ -51,6 +51,7 @@
jobject GetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID);
jboolean GetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID);
jint GetIntField(JNIEnv* env, jobject obj, jfieldID fieldID);
+jlong GetLongField(JNIEnv* env, jobject obj, jfieldID fieldID);
jobject GetStaticObjectField(JNIEnv* env, jclass cls, jfieldID fieldID);
// Constructs a new array holding objects of type jclass.
diff --git a/util/util.go b/util/util.go
index 2576e73..6a071c4 100644
--- a/util/util.go
+++ b/util/util.go
@@ -363,6 +363,16 @@
return int(C.GetIntField(env.value(), obj.value(), fid)), nil
}
+// JLongField returns the value of the provided Java object's long field, or
+// error if the field value couldn't be retrieved.
+func JLongField(env Env, obj Object, field string) (int64, error) {
+ fid, err := jFieldID(env, GetClass(env, obj), field, LongSign)
+ if err != nil {
+ return -1, err
+ }
+ return int64(C.GetLongField(env.value(), obj.value(), fid)), nil
+}
+
// JStringField returns the value of the provided Java object's String field, or
// error if the field value couldn't be retrieved.
func JStringField(env Env, obj Object, field string) (string, error) {
diff --git a/v23/security/store.go b/v23/security/store.go
index e4ceabd..3b0d4c5 100644
--- a/v23/security/store.go
+++ b/v23/security/store.go
@@ -36,7 +36,7 @@
}
if jutil.IsInstanceOf(env, jBlessingStore, jBlessingStoreImplClass) {
// Called with our implementation of BlessingStore, which maintains a Go pointer - use it.
- goPtr, err := jutil.CallLongMethod(env, jBlessingStore, "nativePtr", nil)
+ goPtr, err := jutil.JLongField(env, jBlessingStore, "nativePtr")
if err != nil {
return nil, err
}