summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-23 15:45:25 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-24 12:42:42 +0000
commitfac9eaa4d1a2efefbffa0dde2f676b549ee741db (patch)
treefae7f74e33001d0a793da116776756dd2e58e722
parenta6bc1452b427211e73f41bf5fad2f2d9c4d5e3fb (diff)
downloadmullvadvpn-fac9eaa4d1a2efefbffa0dde2f676b549ee741db.tar.xz
mullvadvpn-fac9eaa4d1a2efefbffa0dde2f676b549ee741db.zip
Refactor `IntoJava` for `TunnelState`
-rw-r--r--mullvad-jni/src/into_java.rs24
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, &parameters)
+ env.new_object(&class, &signature, &parameters)
}
None => env.new_object(&class, "()V", &[]),
}