From 3c7e1b80ac2f453605c0a6b0896e84cdf0d536c7 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Wed, 11 Nov 2015 16:43:27 +0200
Subject: [PATCH] unix/modjni: Add missing get_jclass_name() function.

---
 unix/modjni.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/unix/modjni.c b/unix/modjni.c
index 27470ae02..20804e5a5 100644
--- a/unix/modjni.c
+++ b/unix/modjni.c
@@ -45,6 +45,7 @@ static JavaVM *jvm;
 static JNIEnv *env;
 static jclass Class_class;
 static jclass String_class;
+static jmethodID Class_getName_mid;
 static jmethodID Class_getField_mid;
 static jmethodID Class_getMethods_mid;
 static jmethodID Class_getConstructors_mid;
@@ -233,6 +234,14 @@ STATIC void jobject_attr(mp_obj_t self_in, qstr attr_in, mp_obj_t *dest) {
     }
 }
 
+STATIC void get_jclass_name(jobject obj, char *buf) {
+    jclass obj_class = JJ(GetObjectClass, obj);
+    jstring name = JJ(CallObjectMethod, obj_class, Class_getName_mid);
+    jint len = JJ(GetStringLength, name);
+    JJ(GetStringUTFRegion, name, 0, len, buf);
+    check_exception();
+}
+
 STATIC mp_obj_t jobject_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
     mp_obj_jobject_t *self = self_in;
     if (!JJ(IsInstanceOf, self->obj, List_class)) {
@@ -584,6 +593,8 @@ STATIC void create_jvm() {
     Object_toString_mid = JJ(GetMethodID, Object_class, "toString",
                                      "()Ljava/lang/String;");
 
+    Class_getName_mid = (*env)->GetMethodID(env, Class_class, "getName",
+                                     "()Ljava/lang/String;");
     Class_getField_mid = (*env)->GetMethodID(env, Class_class, "getField",
                                      "(Ljava/lang/String;)Ljava/lang/reflect/Field;");
     Class_getMethods_mid = (*env)->GetMethodID(env, Class_class, "getMethods",
-- 
GitLab