summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-21 16:02:13 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 16:41:56 +0000
commit5d69b6e1b9f84aae615cef3ab77f54bb385207e3 (patch)
tree92ed7f845ebeb10ecd49a899c815260e81ae1605
parent1d9a3f9c6a3bc536de0a92654d87f982ef2bb219 (diff)
downloadmullvadvpn-5d69b6e1b9f84aae615cef3ab77f54bb385207e3.tar.xz
mullvadvpn-5d69b6e1b9f84aae615cef3ab77f54bb385207e3.zip
Create `FromJava` helper trait
-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};