diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-23 15:45:25 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-24 12:42:42 +0000 |
| commit | fac9eaa4d1a2efefbffa0dde2f676b549ee741db (patch) | |
| tree | fae7f74e33001d0a793da116776756dd2e58e722 | |
| parent | a6bc1452b427211e73f41bf5fad2f2d9c4d5e3fb (diff) | |
| download | mullvadvpn-fac9eaa4d1a2efefbffa0dde2f676b549ee741db.tar.xz mullvadvpn-fac9eaa4d1a2efefbffa0dde2f676b549ee741db.zip | |
Refactor `IntoJava` for `TunnelState`
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index c111767e63..282aa8a558 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -519,10 +519,16 @@ impl<'env> IntoJava<'env> for TunnelState { type JavaType = JObject<'env>; fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { - let (variant, location) = match self { + let (variant, parameter) = match self { TunnelState::Disconnected => ("Disconnected", None), - TunnelState::Connecting { location, .. } => ("Connecting", Some(location)), - TunnelState::Connected { location, .. } => ("Connected", Some(location)), + TunnelState::Connecting { location, .. } => ( + "Connecting", + Some((location.into_java(env), "GeoIpLocation")), + ), + TunnelState::Connected { location, .. } => ( + "Connected", + Some((location.into_java(env), "GeoIpLocation")), + ), TunnelState::Disconnecting(_) => ("Disconnecting", None), TunnelState::Blocked(_) => ("Blocked", None), }; @@ -532,13 +538,13 @@ impl<'env> IntoJava<'env> for TunnelState { variant )); - match location { - Some(location) => { - let location = env.auto_local(location.into_java(env)); - let parameters = [JValue::Object(location.as_obj())]; - let signature = "(Lnet/mullvad/mullvadvpn/model/GeoIpLocation;)V"; + match parameter { + Some((java_object, class_name)) => { + let parameter = env.auto_local(java_object); + let parameters = [JValue::Object(parameter.as_obj())]; + let signature = format!("(Lnet/mullvad/mullvadvpn/model/{};)V", class_name); - env.new_object(&class, signature, ¶meters) + env.new_object(&class, &signature, ¶meters) } None => env.new_object(&class, "()V", &[]), } |
