diff options
-rw-r--r-- | app/src/main/java/com/wireguard/android/configStore/ConfigStore.java | 8 | ||||
-rw-r--r-- | app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java | 11 |
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); |