aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2018-01-10 00:01:31 -0600
committerSamuel Holland <samuel@sholland.org>2018-01-10 00:01:52 -0600
commit951afaa9b29637d1abb3b6a60f9fdeb6bc27bb1c (patch)
tree84ea22e6f15f3a313b8c981196b6122c8e0656f9
parentFileConfigStore: Simplify error handling (diff)
downloadwireguard-android-951afaa9b29637d1abb3b6a60f9fdeb6bc27bb1c.tar.xz
wireguard-android-951afaa9b29637d1abb3b6a60f9fdeb6bc27bb1c.zip
ConfigStore: Add a rename method and implement it
Signed-off-by: Samuel Holland <samuel@sholland.org>
-rw-r--r--app/src/main/java/com/wireguard/android/configStore/ConfigStore.java8
-rw-r--r--app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java11
2 files changed, 19 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java b/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java
index 1d6d29ea..3995376c 100644
--- a/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java
+++ b/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java
@@ -43,6 +43,14 @@ public interface ConfigStore {
Config load(final String name) throws Exception;
/**
+ * Rename the configuration for the tunnel given by {@code name}.
+ *
+ * @param name The identifier for the existing configuration in persistent storage.
+ * @param replacement The new identifier for the configuration in persistent storage.
+ */
+ void rename(String name, String replacement) throws Exception;
+
+ /**
* Save the configuration for an existing tunnel given by {@code name}.
*
* @param name The identifier for the configuration in persistent storage (i.e. the name of
diff --git a/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java b/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java
index 68dfb485..4bc7a17e 100644
--- a/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java
+++ b/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java
@@ -70,6 +70,17 @@ public final class FileConfigStore implements ConfigStore {
}
@Override
+ public void rename(final String name, final String replacement) throws IOException {
+ Log.d(TAG, "Renaming configuration for tunnel " + name + " to " + replacement);
+ final File file = fileFor(name);
+ final File replacementFile = fileFor(replacement);
+ if (!replacementFile.createNewFile())
+ throw new IOException("Configuration for " + replacement + " already exists");
+ if (!file.renameTo(replacementFile))
+ throw new IOException("Cannot rename configuration file " + file.getName());
+ }
+
+ @Override
public Config save(final String name, final Config config) throws IOException {
Log.d(TAG, "Saving configuration for tunnel " + name);
final File file = fileFor(name);