From: Tobias Brunner Date: Mon, 26 Jun 2017 14:19:08 +0000 (+0200) Subject: android: Add convenience methods to get/set selected apps to/from a sorted set X-Git-Tag: 5.6.0dr1~24^2~11 X-Git-Url: https://git.strongswan.org/?p=strongswan.git;a=commitdiff_plain;h=800f881ad0121ba51f1354e7e357fdea7bc8ebb7 android: Add convenience methods to get/set selected apps to/from a sorted set --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfile.java b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfile.java index 92e5906..0b552f4 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfile.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfile.java @@ -18,6 +18,11 @@ package org.strongswan.android.data; +import android.text.TextUtils; + +import java.util.Arrays; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.UUID; public class VpnProfile implements Cloneable @@ -202,6 +207,7 @@ public class VpnProfile implements Cloneable { this.mIncludedSubnets = includedSubnets; } + public String getIncludedSubnets() { return mIncludedSubnets; @@ -212,11 +218,26 @@ public class VpnProfile implements Cloneable this.mSelectedApps = selectedApps; } + public void setSelectedApps(SortedSet selectedApps) + { + this.mSelectedApps = selectedApps.size() > 0 ? TextUtils.join(" ", selectedApps) : null; + } + public String getSelectedApps() { return mSelectedApps; } + public SortedSet getSelectedAppsSet() + { + TreeSet set = new TreeSet<>(); + if (!TextUtils.isEmpty(mSelectedApps)) + { + set.addAll(Arrays.asList(mSelectedApps.split("\\s+"))); + } + return set; + } + public void setSelectedAppsHandling(SelectedAppsHandling selectedAppsHandling) { this.mSelectedAppsHandling = selectedAppsHandling; diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java index ffb2045..965edfb 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java @@ -64,6 +64,7 @@ import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.SortedSet; public class CharonVpnService extends VpnService implements Runnable, VpnStateService.VpnStateListener { @@ -811,7 +812,7 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe private final IPRangeSet mExcludedSubnets; private final int mSplitTunneling; private final SelectedAppsHandling mAppHandling; - private final String[] mSelectedApps; + private final SortedSet mSelectedApps; private int mMtu; private boolean mIPv4Seen, mIPv6Seen; @@ -833,8 +834,7 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe Integer splitTunneling = profile.getSplitTunneling(); mSplitTunneling = splitTunneling != null ? splitTunneling : 0; mAppHandling = profile.getSelectedAppsHandling(); - String selectedApps = profile.getSelectedApps(); - mSelectedApps = selectedApps != null ? selectedApps.split("\\s+") : null; + mSelectedApps = profile.getSelectedAppsSet(); } public void addAddress(String address, int prefixLength) @@ -961,7 +961,7 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe builder.addRoute("::", 0); } /* apply selected applications */ - if (mSelectedApps != null && mSelectedApps.length > 0) + if (mSelectedApps.size() > 0) { switch (mAppHandling) {