From a5fd7ff9dc01e993e68f776425d5dab031d598f9 Mon Sep 17 00:00:00 2001
From: Ernir Erlingsson <ernir@ymirmobile.com>
Date: Thu, 10 Dec 2015 10:49:28 +0100
Subject: [PATCH] Added dependency injections for FileUtils and removed
 redundant code

---
 .../android/CrashReportActivity.java          |  5 ++--
 .../android/PasswordActivity.java             |  5 ++--
 .../briarproject/system/AndroidFileUtils.java | 25 -------------------
 .../system/AndroidSystemModule.java           |  2 +-
 .../briarproject/api/system/FileUtils.java    |  2 ++
 .../briarproject/system/FileUtilsImpl.java    | 25 +++++++++++++++++++
 .../briarproject/system/DesktopFileUtils.java | 17 -------------
 .../system/DesktopSystemModule.java           |  2 +-
 .../org/briarproject/TestDatabaseModule.java  |  3 ++-
 .../src/org/briarproject/TestFileUtils.java   | 17 -------------
 .../org/briarproject/db/H2DatabaseTest.java   |  4 +--
 .../file/RemovableDrivePluginTest.java        |  4 +--
 12 files changed, 41 insertions(+), 70 deletions(-)
 delete mode 100644 briar-android/src/org/briarproject/system/AndroidFileUtils.java
 create mode 100644 briar-core/src/org/briarproject/system/FileUtilsImpl.java
 delete mode 100644 briar-desktop/src/org/briarproject/system/DesktopFileUtils.java
 delete mode 100644 briar-tests/src/org/briarproject/TestFileUtils.java

diff --git a/briar-android/src/org/briarproject/android/CrashReportActivity.java b/briar-android/src/org/briarproject/android/CrashReportActivity.java
index 539591cb7c..a2b8b2ac9a 100644
--- a/briar-android/src/org/briarproject/android/CrashReportActivity.java
+++ b/briar-android/src/org/briarproject/android/CrashReportActivity.java
@@ -45,7 +45,6 @@ import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.android.util.ListLoadingProgressBar;
 import org.briarproject.api.android.AndroidExecutor;
 import org.briarproject.api.system.FileUtils;
-import org.briarproject.system.AndroidFileUtils;
 import org.briarproject.util.StringUtils;
 
 import android.annotation.SuppressLint;
@@ -71,12 +70,14 @@ import android.widget.LinearLayout;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
+import javax.inject.Inject;
+
 public class CrashReportActivity extends Activity implements OnClickListener {
 
 	private static final Logger LOG =
 			Logger.getLogger(CrashReportActivity.class.getName());
 
-	private final FileUtils fileUtils = new AndroidFileUtils();
+	@Inject private FileUtils fileUtils;
 	private final AndroidExecutor androidExecutor = new AndroidExecutorImpl();
 
 	private ScrollView scroll = null;
diff --git a/briar-android/src/org/briarproject/android/PasswordActivity.java b/briar-android/src/org/briarproject/android/PasswordActivity.java
index 3d5ecd5e16..383fa88b89 100644
--- a/briar-android/src/org/briarproject/android/PasswordActivity.java
+++ b/briar-android/src/org/briarproject/android/PasswordActivity.java
@@ -12,7 +12,7 @@ import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.crypto.CryptoExecutor;
 import org.briarproject.api.crypto.SecretKey;
 import org.briarproject.api.db.DatabaseConfig;
-import org.briarproject.system.AndroidFileUtils;
+import org.briarproject.api.system.FileUtils;
 import org.briarproject.util.StringUtils;
 
 import android.app.AlertDialog;
@@ -41,6 +41,7 @@ public class PasswordActivity extends BaseActivity {
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile CryptoComponent crypto;
 	@Inject private volatile DatabaseConfig databaseConfig;
+	@Inject private FileUtils fileUtils;
 
 	@Override
 	public void onCreate(Bundle state) {
@@ -72,7 +73,7 @@ public class PasswordActivity extends BaseActivity {
 	@Override
 	protected void clearDbPrefs() {
 		super.clearDbPrefs();
-		AndroidFileUtils.deleteFileOrDir(databaseConfig.getDatabaseDirectory());
+		fileUtils.deleteFileOrDir(databaseConfig.getDatabaseDirectory());
 		gotoAndFinish(SetupActivity.class, RESULT_CANCELED);
 	}
 
diff --git a/briar-android/src/org/briarproject/system/AndroidFileUtils.java b/briar-android/src/org/briarproject/system/AndroidFileUtils.java
deleted file mode 100644
index 3a5dfa3529..0000000000
--- a/briar-android/src/org/briarproject/system/AndroidFileUtils.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.briarproject.system;
-
-import org.briarproject.api.system.FileUtils;
-
-import java.io.File;
-import java.io.IOException;
-
-public class AndroidFileUtils implements FileUtils {
-
-	public long getTotalSpace(File f) throws IOException {
-		return f.getTotalSpace();
-	}
-
-	public long getFreeSpace(File f) throws IOException {
-		return f.getUsableSpace();
-	}
-
-	public static void deleteFileOrDir(File f) {
-		if (f.isFile())
-			f.delete();
-		else if (f.isDirectory())
-			for (File child : f.listFiles())
-				deleteFileOrDir(child);
-	}
-}
diff --git a/briar-android/src/org/briarproject/system/AndroidSystemModule.java b/briar-android/src/org/briarproject/system/AndroidSystemModule.java
index aa6769e59b..03fd56dcc4 100644
--- a/briar-android/src/org/briarproject/system/AndroidSystemModule.java
+++ b/briar-android/src/org/briarproject/system/AndroidSystemModule.java
@@ -14,7 +14,7 @@ public class AndroidSystemModule extends AbstractModule {
 		bind(Clock.class).to(SystemClock.class);
 		bind(Timer.class).to(SystemTimer.class);
 		bind(SeedProvider.class).to(AndroidSeedProvider.class);
-		bind(FileUtils.class).to(AndroidFileUtils.class);
+		bind(FileUtils.class).to(FileUtilsImpl.class);
 		bind(LocationUtils.class).to(AndroidLocationUtils.class);
 	}
 }
diff --git a/briar-api/src/org/briarproject/api/system/FileUtils.java b/briar-api/src/org/briarproject/api/system/FileUtils.java
index bde3960497..baf68ca014 100644
--- a/briar-api/src/org/briarproject/api/system/FileUtils.java
+++ b/briar-api/src/org/briarproject/api/system/FileUtils.java
@@ -8,4 +8,6 @@ public interface FileUtils {
 	long getTotalSpace(File f) throws IOException;
 
 	long getFreeSpace(File f) throws IOException;
+
+	void deleteFileOrDir(File f);
 }
diff --git a/briar-core/src/org/briarproject/system/FileUtilsImpl.java b/briar-core/src/org/briarproject/system/FileUtilsImpl.java
new file mode 100644
index 0000000000..923f35c9a1
--- /dev/null
+++ b/briar-core/src/org/briarproject/system/FileUtilsImpl.java
@@ -0,0 +1,25 @@
+package org.briarproject.system;
+
+import org.briarproject.api.system.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+public class FileUtilsImpl implements FileUtils {
+
+    public long getTotalSpace(File f) throws IOException {
+        return f.getTotalSpace(); // Requires Java 1.6
+    }
+
+    public long getFreeSpace(File f) throws IOException {
+        return f.getUsableSpace(); // Requires Java 1.6
+    }
+
+    public void deleteFileOrDir(File f) {
+        if (f.isFile())
+            f.delete();
+        else if (f.isDirectory())
+            for (File child : f.listFiles())
+                deleteFileOrDir(child);
+    }
+}
diff --git a/briar-desktop/src/org/briarproject/system/DesktopFileUtils.java b/briar-desktop/src/org/briarproject/system/DesktopFileUtils.java
deleted file mode 100644
index c397068646..0000000000
--- a/briar-desktop/src/org/briarproject/system/DesktopFileUtils.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.briarproject.system;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.briarproject.api.system.FileUtils;
-
-class DesktopFileUtils implements FileUtils {
-
-	public long getTotalSpace(File f) throws IOException {
-		return f.getTotalSpace(); // Requires Java 1.6
-	}
-
-	public long getFreeSpace(File f) throws IOException {
-		return f.getUsableSpace(); // Requires Java 1.6
-	}
-}
diff --git a/briar-desktop/src/org/briarproject/system/DesktopSystemModule.java b/briar-desktop/src/org/briarproject/system/DesktopSystemModule.java
index e6286d17d2..e605fe9507 100644
--- a/briar-desktop/src/org/briarproject/system/DesktopSystemModule.java
+++ b/briar-desktop/src/org/briarproject/system/DesktopSystemModule.java
@@ -15,6 +15,6 @@ public class DesktopSystemModule extends AbstractModule {
 		bind(Timer.class).to(SystemTimer.class);
 		if (OsUtils.isLinux())
 			bind(SeedProvider.class).to(LinuxSeedProvider.class);
-		bind(FileUtils.class).to(DesktopFileUtils.class);
+		bind(FileUtils.class).to(FileUtilsImpl.class);
 	}
 }
diff --git a/briar-tests/src/org/briarproject/TestDatabaseModule.java b/briar-tests/src/org/briarproject/TestDatabaseModule.java
index 263ec20c2f..c04b3ba51d 100644
--- a/briar-tests/src/org/briarproject/TestDatabaseModule.java
+++ b/briar-tests/src/org/briarproject/TestDatabaseModule.java
@@ -4,6 +4,7 @@ import com.google.inject.AbstractModule;
 
 import org.briarproject.api.db.DatabaseConfig;
 import org.briarproject.api.system.FileUtils;
+import org.briarproject.system.FileUtilsImpl;
 
 import java.io.File;
 
@@ -25,6 +26,6 @@ public class TestDatabaseModule extends AbstractModule {
 
 	protected void configure() {
 		bind(DatabaseConfig.class).toInstance(config);
-		bind(FileUtils.class).to(TestFileUtils.class);
+		bind(FileUtils.class).to(FileUtilsImpl.class);
 	}
 }
diff --git a/briar-tests/src/org/briarproject/TestFileUtils.java b/briar-tests/src/org/briarproject/TestFileUtils.java
deleted file mode 100644
index 78a02ff818..0000000000
--- a/briar-tests/src/org/briarproject/TestFileUtils.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.briarproject;
-
-import org.briarproject.api.system.FileUtils;
-
-import java.io.File;
-import java.io.IOException;
-
-public class TestFileUtils implements FileUtils {
-
-	public long getTotalSpace(File f) throws IOException {
-		return f.getTotalSpace();
-	}
-
-	public long getFreeSpace(File f) throws IOException {
-		return f.getUsableSpace();
-	}
-}
diff --git a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
index 5aff9c74ab..430a9a7ec9 100644
--- a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
+++ b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
@@ -2,7 +2,6 @@ package org.briarproject.db;
 
 import org.briarproject.BriarTestCase;
 import org.briarproject.TestDatabaseConfig;
-import org.briarproject.TestFileUtils;
 import org.briarproject.TestMessage;
 import org.briarproject.TestUtils;
 import org.briarproject.api.Author;
@@ -20,6 +19,7 @@ import org.briarproject.api.messaging.Message;
 import org.briarproject.api.messaging.MessageId;
 import org.briarproject.api.transport.Endpoint;
 import org.briarproject.api.transport.TemporarySecret;
+import org.briarproject.system.FileUtilsImpl;
 import org.briarproject.system.SystemClock;
 import org.junit.After;
 import org.junit.Before;
@@ -1610,7 +1610,7 @@ public class H2DatabaseTest extends BriarTestCase {
 
 	private Database<Connection> open(boolean resume) throws Exception {
 		Database<Connection> db = new H2Database(new TestDatabaseConfig(testDir,
-				MAX_SIZE), new TestFileUtils(), new SystemClock());
+				MAX_SIZE), new FileUtilsImpl(), new SystemClock());
 		if (!resume) TestUtils.deleteTestDirectory(testDir);
 		db.open();
 		return db;
diff --git a/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java b/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
index f4326e9e68..cb29fc2694 100644
--- a/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.plugins.file;
 
+import com.google.inject.Inject;
 import org.briarproject.BriarTestCase;
-import org.briarproject.TestFileUtils;
 import org.briarproject.TestUtils;
 import org.briarproject.api.ContactId;
 import org.briarproject.api.plugins.TransportConnectionWriter;
@@ -34,7 +34,7 @@ public class RemovableDrivePluginTest extends BriarTestCase {
 
 	private final File testDir = TestUtils.getTestDirectory();
 	private final ContactId contactId = new ContactId(234);
-	private final FileUtils fileUtils = new TestFileUtils();
+	@Inject private FileUtils fileUtils;
 
 	@Before
 	public void setUp() {
-- 
GitLab