diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 11:07:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 12:43:29 +0000 |
| commit | 11a1a03e4d4004038a4b159fc7fe79e8f585b9c6 (patch) | |
| tree | 834dbc96e672ff45ba61d89f7b0ce92592294b30 | |
| parent | 4682857e2639f95635bb7325977a1f83d3c2894f (diff) | |
| download | mullvadvpn-11a1a03e4d4004038a4b159fc7fe79e8f585b9c6.tar.xz mullvadvpn-11a1a03e4d4004038a4b159fc7fe79e8f585b9c6.zip | |
Implement `IntoJava` for `LocationConstraint`
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index 22b582bc1b..b67d7383e8 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -6,6 +6,7 @@ use jni::{ }; use mullvad_types::{ account::AccountData, + relay_constraints::LocationConstraint, relay_list::{Relay, RelayList, RelayListCity, RelayListCountry}, settings::Settings, }; @@ -154,6 +155,57 @@ impl<'env> IntoJava<'env> for Relay { } } +impl<'env> IntoJava<'env> for LocationConstraint { + type JavaType = JObject<'env>; + + fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { + match self { + LocationConstraint::Country(country_code) => { + let class = get_class("net/mullvad/mullvadvpn/model/LocationConstraint$Country"); + let country = env.auto_local(JObject::from(country_code.into_java(env))); + let parameters = [JValue::Object(country.as_obj())]; + + env.new_object(&class, "(Ljava/lang/String;)V", ¶meters) + .expect("Failed to create LocationConstraint.Country Java object") + } + LocationConstraint::City(country_code, city_code) => { + let class = get_class("net/mullvad/mullvadvpn/model/LocationConstraint$City"); + let country = env.auto_local(JObject::from(country_code.into_java(env))); + let city = env.auto_local(JObject::from(city_code.into_java(env))); + let parameters = [ + JValue::Object(country.as_obj()), + JValue::Object(city.as_obj()), + ]; + + env.new_object( + &class, + "(Ljava/lang/String;Ljava/lang/String;)V", + ¶meters, + ) + .expect("Failed to create LocationConstraint.City Java object") + } + LocationConstraint::Hostname(country_code, city_code, hostname) => { + let class = get_class("net/mullvad/mullvadvpn/model/LocationConstraint$Hostname"); + let country = env.auto_local(JObject::from(country_code.into_java(env))); + let city = env.auto_local(JObject::from(city_code.into_java(env))); + let hostname = env.auto_local(JObject::from(hostname.into_java(env))); + let parameters = [ + JValue::Object(country.as_obj()), + JValue::Object(city.as_obj()), + JValue::Object(hostname.as_obj()), + ]; + + env.new_object( + &class, + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", + ¶meters, + ) + .expect("Failed to create LocationConstraint.Hostname Java object") + } + } + } +} + impl<'env> IntoJava<'env> for Settings { type JavaType = JObject<'env>; |
