summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-23 11:07:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-23 12:43:29 +0000
commit11a1a03e4d4004038a4b159fc7fe79e8f585b9c6 (patch)
tree834dbc96e672ff45ba61d89f7b0ce92592294b30
parent4682857e2639f95635bb7325977a1f83d3c2894f (diff)
downloadmullvadvpn-11a1a03e4d4004038a4b159fc7fe79e8f585b9c6.tar.xz
mullvadvpn-11a1a03e4d4004038a4b159fc7fe79e8f585b9c6.zip
Implement `IntoJava` for `LocationConstraint`
-rw-r--r--mullvad-jni/src/into_java.rs52
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", &parameters)
+ .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",
+ &parameters,
+ )
+ .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",
+ &parameters,
+ )
+ .expect("Failed to create LocationConstraint.Hostname Java object")
+ }
+ }
+ }
+}
+
impl<'env> IntoJava<'env> for Settings {
type JavaType = JObject<'env>;