summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/into_java.rs19
-rw-r--r--mullvad-jni/src/lib.rs1
2 files changed, 14 insertions, 6 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index 470424edc0..c5fd9667c0 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -1,8 +1,8 @@
use crate::get_class;
use ipnetwork::IpNetwork;
use jni::{
- objects::{JList, JObject, JString, JValue},
- signature::JavaType,
+ objects::{JObject, JString, JValue},
+ signature::{JavaType, Primitive},
sys::{jboolean, jint, jshort, jsize},
JNIEnv,
};
@@ -63,14 +63,21 @@ where
.new_object(&class, "(I)V", &parameters)
.expect("Failed to create ArrayList object");
- let list =
- JList::from_env(env, list_object).expect("Failed to create JList from ArrayList");
+ let list_class = get_class("java/util/List");
+ let add_method = env
+ .get_method_id(&list_class, "add", "(Ljava/lang/Object;)Z")
+ .expect("Failed to get List.add(Object) method id");
for element in self {
let java_element = env.auto_local(JObject::from(element.into_java(env)));
- list.add(java_element.as_obj())
- .expect("Failed to add element to ArrayList");
+ env.call_method_unchecked(
+ list_object,
+ add_method,
+ JavaType::Primitive(Primitive::Boolean),
+ &[JValue::Object(java_element.as_obj())],
+ )
+ .expect("Failed to add element to ArrayList");
}
list_object
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 947d2b5f70..ff587a4b38 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -33,6 +33,7 @@ const LOG_FILENAME: &str = "daemon.log";
const CLASSES_TO_LOAD: &[&str] = &[
"java/net/InetAddress",
"java/util/ArrayList",
+ "java/util/List",
"net/mullvad/mullvadvpn/model/AccountData",
"net/mullvad/mullvadvpn/model/Constraint$Any",
"net/mullvad/mullvadvpn/model/Constraint$Only",