summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/from_java.rs18
-rw-r--r--mullvad-jni/src/lib.rs1
2 files changed, 19 insertions, 0 deletions
diff --git a/mullvad-jni/src/from_java.rs b/mullvad-jni/src/from_java.rs
new file mode 100644
index 0000000000..526a83e1fb
--- /dev/null
+++ b/mullvad-jni/src/from_java.rs
@@ -0,0 +1,18 @@
+use jni::{objects::JString, JNIEnv};
+
+pub trait FromJava<'env> {
+ type JavaType: 'env;
+
+ fn from_java(env: &JNIEnv<'env>, source: Self::JavaType) -> Self;
+}
+
+impl<'env> FromJava<'env> for String {
+ type JavaType = JString<'env>;
+
+ fn from_java(env: &JNIEnv<'env>, source: Self::JavaType) -> Self {
+ String::from(
+ env.get_string(source)
+ .expect("Failed to convert from Java String"),
+ )
+ }
+}
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index ce6d953fcd..647d07b0e3 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -1,6 +1,7 @@
#![cfg(target_os = "android")]
mod daemon_interface;
+mod from_java;
use crate::daemon_interface::DaemonInterface;
use jni::{objects::JObject, JNIEnv};