diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 11:14:38 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 12:43:29 +0000 |
| commit | 5d8cbd001a874e1dd0c4a87a480ffad239170e5e (patch) | |
| tree | 5c09fe768616fd490fc3966103514f590f873ff5 | |
| parent | 62dedad78d1e88c7a57c493a106964fc75b1900c (diff) | |
| download | mullvadvpn-5d8cbd001a874e1dd0c4a87a480ffad239170e5e.tar.xz mullvadvpn-5d8cbd001a874e1dd0c4a87a480ffad239170e5e.zip | |
Implement `IntoJava` for `RelaySettings`
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 42 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 2 |
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", + ¶meters, + ) + .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", |
