summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-23 11:14:38 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-23 12:43:29 +0000
commit5d8cbd001a874e1dd0c4a87a480ffad239170e5e (patch)
tree5c09fe768616fd490fc3966103514f590f873ff5
parent62dedad78d1e88c7a57c493a106964fc75b1900c (diff)
downloadmullvadvpn-5d8cbd001a874e1dd0c4a87a480ffad239170e5e.tar.xz
mullvadvpn-5d8cbd001a874e1dd0c4a87a480ffad239170e5e.zip
Implement `IntoJava` for `RelaySettings`
-rw-r--r--mullvad-jni/src/into_java.rs42
-rw-r--r--mullvad-jni/src/lib.rs2
2 files changed, 43 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index d51d74ba87..3dd65451e7 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -6,9 +6,10 @@ use jni::{
};
use mullvad_types::{
account::AccountData,
- relay_constraints::{Constraint, LocationConstraint},
+ relay_constraints::{Constraint, LocationConstraint, RelayConstraints, RelaySettings},
relay_list::{Relay, RelayList, RelayListCity, RelayListCountry},
settings::Settings,
+ CustomTunnelEndpoint,
};
use std::fmt::Debug;
@@ -234,6 +235,45 @@ impl<'env> IntoJava<'env> for LocationConstraint {
}
}
+impl<'env> IntoJava<'env> for RelaySettings {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ match self {
+ RelaySettings::CustomTunnelEndpoint(endpoint) => endpoint.into_java(env),
+ RelaySettings::Normal(relay_constraints) => relay_constraints.into_java(env),
+ }
+ }
+}
+
+impl<'env> IntoJava<'env> for CustomTunnelEndpoint {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let class = get_class("net/mullvad/mullvadvpn/model/RelaySettings$CustomTunnelEndpoint");
+
+ env.new_object(&class, "()V", &[])
+ .expect("Failed to create CustomTunnelEndpoint Java object")
+ }
+}
+
+impl<'env> IntoJava<'env> for RelayConstraints {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let class = get_class("net/mullvad/mullvadvpn/model/RelaySettings$RelayConstraints");
+ let location = env.auto_local(self.location.into_java(env));
+ let parameters = [JValue::Object(location.as_obj())];
+
+ env.new_object(
+ &class,
+ "(Lnet/mullvad/mullvadvpn/model/Constraint;)V",
+ &parameters,
+ )
+ .expect("Failed to create RelaySettings.RelayConstraints Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for Settings {
type JavaType = JObject<'env>;
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 99a3041d9a..9a7f81a0fc 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -31,6 +31,8 @@ const CLASSES_TO_LOAD: &[&str] = &[
"net/mullvad/mullvadvpn/model/RelayList",
"net/mullvad/mullvadvpn/model/RelayListCity",
"net/mullvad/mullvadvpn/model/RelayListCountry",
+ "net/mullvad/mullvadvpn/model/RelaySettings$CustomTunnelEndpoint",
+ "net/mullvad/mullvadvpn/model/RelaySettings$RelayConstraints",
"net/mullvad/mullvadvpn/model/RelaySettingsUpdate$CustomTunnelEndpoint",
"net/mullvad/mullvadvpn/model/RelaySettingsUpdate$RelayConstraintsUpdate",
"net/mullvad/mullvadvpn/model/Settings",